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 rwfBuilding 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.