Rwf is a comprehensive framework for building web applications in Rust. Written using the classic MVC pattern (model-view-controller), Rwf comes standard with everything you need to easily build fast and secure web apps.
📘 The documentation is available here.
- ✔ HTTP server
- ✔ User-friendly ORM to build PostgreSQL queries easily
- ✔ Dynamic templates
- ✔ Authentication & built-in user sessions
- ✔ Middleware
- ✔ Background jobs and scheduled jobs
- ✔ Database migrations
- ✔ Built-in REST framework with JSON serialization
- ✔ WebSockets support
- ✔ Static files hosting
- ✔ Tight integration with Hotwired Turbo for building backend-driven SPAs
- ✔ Environment-specific configuration
- ✔ Logging and metrics
- ✔ CLI
- ✔ WSGI server for migrating from Django/Flask apps
- ✔ Rack server for migrating from Rails
To add Rwf to your stack, create a Rust binary application and add rwf
to your dependencies:
cargo add rwf
Building an app is then as simple as:
use rwf::prelude::*;
use rwf::http::Server;
#[controller]
async fn index() -> Response {
Response::new().html("<h1>Welcome to Rwf!</h1>")
}
#[tokio::main]
async fn main() {
Server::new(vec![
route!("/" => index),
])
.launch()
.await
.unwrap();
}
See examples for common use cases.
Rwf is in beta and looking for early adopters. Most features are in a good state and documentation is usable.
Contributions are welcome. Please see CONTRIBUTING for guidelines, ARCHITECTURE for a tour of the code, and ROADMAP for a non-exhaustive list of desired features.