Build web appswith joy
A simple and delightful Rust web framework. File-based routing, type-safe templates, and islands.
Simplicity
Elegant by design
Write clean, expressive code. Every file in your routes directory becomes a page.
use rejoice::{Req, Res, html};
pub async fn page(req: Req, res: Res) -> Res {
res.html(html! {
h1 { "Hello, world!" }
p { "Welcome to Rejoice." }
})
}use rejoice::{Children, Req, Res, html, DOCTYPE};
pub async fn layout(req: Req, res: Res, children: Children) -> Res {
res.html(html! {
(DOCTYPE)
html {
head { title { "My App" } }
body { (children) }
}
})
}Features
Everything you need
A complete toolkit for building modern web applications.
File-based Routing
Drop a file in src/routes/ and it becomes a route. Nested layouts and dynamic parameters included.
Type-safe Templates
Compile-time HTML with Maud. Catch errors before runtime, enjoy fearless refactoring.
SolidJS Islands
Add interactivity where you need it. Server-render everything else for blazing speed.
Tailwind CSS v4
Utility-first CSS that scans your Rust and TSX files automatically.
SQLite Ready
Optional database support with connection pooling. Just add a flag.
Live Reload
Instant feedback. Changes to Rust, TSX, or CSS reflect immediately.
Quick Start
Begin in seconds
Three commands to your first app.
# Install the CLI
cargo install rejoice
# Create a new project
rejoice init my-app && cd my-app
# Start developing
rejoice devYour app is running at localhost:8080