engineeringrust

Why We Built SeggWat with Rust

The technical and product reasons behind choosing Rust, Axum, and Dioxus for a feedback collection platform.

Hauke Jung
|April 04, 2026|
2 min read

Why We Built SeggWat with Rust

When I started building SeggWat, the default choice would have been a TypeScript stack — Next.js, Prisma, the usual suspects. Instead, I went with Rust for the entire stack: Axum for the API, Dioxus for the fullstack dashboard, and shared crates for domain logic. Here is why.

One Language, Top to Bottom

SeggWat's codebase is a Cargo workspace. The domain types in seggwat-core — feedback entities, rating types, subscription tiers — are shared between the API server, the dashboard backend, the CLI tool, and the seed scripts. A change to a type is checked everywhere at compile time.

There is no drift between a TypeScript frontend type and a Python backend model. There is no "the API returns this shape but the client expects that shape" class of bug. The compiler catches it.

Performance Where It Matters

Our embeddable widgets run on customer websites. The feedback button and helpful rating widgets are vanilla JavaScript for maximum compatibility, but the API they talk to needs to be fast and reliable. Axum on Tokio handles thousands of concurrent feedback submissions with minimal resource usage.

For a bootstrapped product, this matters. Lower resource usage means lower hosting costs and more headroom before scaling becomes a concern.

Dioxus for Fullstack

Dioxus lets us write the dashboard UI in Rust with server functions that bridge client and server seamlessly. A server function decorated with #[post("/server/projects")] is callable from the client like any async function, but executes on the server with full database access. No separate API layer to maintain for internal dashboard operations.

The same binary serves the SSR-rendered marketing pages, the interactive dashboard, the REST API, and the MCP server. One deployment artifact.

Trade-Offs

Rust is not free. Compile times are longer. The ecosystem for web UI is smaller than React's. Finding contributors who know Rust + Dioxus is harder than finding React developers.

But for a product where reliability and performance are core values, where a single developer needs to maintain a full stack without things falling apart, Rust has been the right choice.

What's Next

We will be writing more about specific technical decisions — how we handle authentication with Zitadel's Session API, our approach to embeddable widgets, and the compile-time content pipeline that powers our documentation and this blog. Stay tuned.

Blog