# Build desktop Rust apps in a snap
Using **Drteeth**, you pick your favorite async web server framework
and your favorite web frontend tools, and use them to build a desktop
app. From the programmer’s point of view everything works exactly the
same as if it were split up into a web server and a browser
client. From a user’s point of view, it’s just a single small, fast
app like any other.
Drteeth can use [tokio](https://tokio.rs/),
[async-std](https://async.rs/), or
[smol](https://github.com/smol-rs/smol) as its async runtime, and any
web server compatible with any of them will work as the framework for
your program logic.
Drteeth uses [Wry](https://github.com/tauri-apps/wry) to open your
target platform’s native webview, so there’s no need to bundle a full
web browser into the binary. Drteeth apps are small, fast, and
portable.
# Also a server
Programs using Drteeth are in fact actual web apps, so they can be
accessed remotely if (and only if) they are configured to open a port
on a non-loopback network interface. Similarly, the server part of a
Drteeth program can provide an API which can be used by “plugin”
programs to interface with it.
# Super simple
There’s only one function call required to launch a Drteeth
program. You tell it the title to use for the window, how to run the
async web server, and which URL to start on.
Here’s the Drteeth invocation from the Axum example. We’ve left out
the setup for the Axum server itself here, but this is all that’s
needed to turn that server into a desktop app:
```rust
drteeth::launch("Basic Demo", addr, async move {
Server::from_tcp(ear)
.unwrap()
.serve(app.into_make_service())
.with_graceful_shutdown(async {
shutdown_rx.await.ok();
})
.await
.unwrap();
})
.unwrap();
```
Check out [the examples](https://git.sr.ht/~djarb/drteeth/tree/master/item/examples)
to see how to use Drteeth with Axum, Tide, and Trillium.
Detailed [API documentation](https://docs.rs/drteeth/latest/drteeth/)
is available on docs.rs.
# Pairs well with…
Check out [htmx](https://htmx.org/),
[Sailfish](https://lib.rs/crates/sailfish),
[Alpine](https://alpinejs.dev/), [Pure](https://purecss.io/), and
[Tacit](https://yegor256.github.io/tacit/).