Modular Rust applications
Build once,
reuse everywhere.
A Rust framework for building web and backend applications as one deployable program, out of modules you can reuse in the next application. Ordinary Rust and Cargo; the compiler checks the wiring.
- One deployable process
- Compile-time composition
- No service locator
Noteswhat it does — no protocol, no storageModular
Every capability is a contract with replaceable implementations and adapters. Swap the database, the UI, or the caller without rewriting the rules between them.
Fast by construction
Static dispatch, typed ports, and compile-time composition. No runtime service locator, reflection, or hidden dependency graph on the request path.
Clear code
Plain Rust types and explicit constructors. The composition root shows exactly which implementation and adapter this application runs.
The registry
Start from working pieces
The framework ships contracts, adapters, implementations, and stacks as ready crates. Compose the ones an application needs: a new app is assembled, not written from zero.
What you get
Production pieces, ready to compose
Each capability is a crate with a contract, concrete implementations, and transport adapters. Add the ones this application needs; leave the rest out.
Router conventions, typed extractors, validation, and consistent problem responses.
Server-rendered pagesHTML components and forms with optional HTMX; works without JavaScript.
Validation and errorsOne Validate trait and one AppError type, honored at every boundary.
PersistencePool lifecycle, reviewed migrations, and typed repositories over TimescaleDB.
AuthenticationPasswords, sessions, CSRF, profiles, roles, and resource grants.
CachingA typed cache contract with a bounded process-local implementation.
Background workWorkers with prepare and start phases and a bounded shutdown drain.
ObservabilityBounded operation names and OpenTelemetry wiring, installed explicitly.
One module, several callers
Reuse is the point
A module keeps its rules independent of the database, the interface, and the caller, so the same crate runs in a web API and a command-line application unchanged.
notesthe same crate, reusedThe browser starter
A complete application, already built
Sign-in, projects, tasks, search, pagination, and a database, composed from framework crates and rendered on the server. No single-page framework required.

