| Crates.io | derive_form |
| lib.rs | derive_form |
| version | 1.1.11 |
| created_at | 2026-01-03 18:26:33.481304+00 |
| updated_at | 2026-01-25 00:53:02.647462+00 |
| description | Procedural macros for Runique web framework - automatic form generation from models |
| homepage | https://github.com/seb-alliot/runique |
| repository | https://github.com/seb-alliot/runique |
| max_upload_size | |
| id | 2020566 |
| size | 29,676 |
β οΈ Note: This documentation has been generated with AI assistance. While care has been taken to ensure accuracy, some links or details may contain errors. Please report issues on GitHub.
A modern and comprehensive Rust web framework inspired by Django, for building robust and performant web applications.
π Languages : English | π«π· FranΓ§ais
Full Documentation : Installation Guide
Quick start:
git clone https://github.com/seb-alliot/runique
cd runique
cargo build
cargo test --all
π Read : docs/en/01-installation.md for complete details
Full Documentation : Architecture Guide
Overview of Runique's architecture:
Runique Framework
βββ Forms System # Type-safe forms
βββ Routing Engine # URL pattern routing
βββ Template Engine # Tera templates
βββ Middleware Stack # Security & headers
βββ ORM Layer # SeaORM integration
βββ Utils # Helpers and utilities
π Read : docs/en/02-architecture.md for internal structure
Full Documentation : Configuration Guide
Configure your server and application:
let settings = Settings {
server: ServerConfig { ... },
database: DatabaseConfig { ... },
security: SecurityConfig { ... },
};
π Read : docs/en/03-configuration.md for all options
Full Documentation : Routing Guide
Define your routes with Axum's Router:
use axum::routing::{get, post};
fn routes() -> Router {
Router::new()
.route("/", get(views::home))
.route("/api/users", post(views::create_user))
}
π Read : docs/en/04-routing.md for patterns and options
Full Documentation : Forms Guide
Create forms easily with #[derive(RuniqueForm)]:
#[derive(RuniqueForm)]
pub struct UserForm {
#[field(label = "Username", required, min_length = 3)]
pub username: String,
#[field(label = "Email", required, input_type = "email")]
pub email: String,
}
// Handle form submission
async fn register(
Prisme(mut form): Prisme<UserForm>,
mut template: TemplateContext,
) -> Response {
if form.is_valid().await {
// Process form
}
template.context.insert("form", form);
template.render("register.html")
}
π Read : docs/en/05-forms.md for all field types## π¨ Templates
Full Documentation : Templates Guide
Use Tera templates:
<h1>{{ title }}</h1>
{% for item in items %}
<p>{{ item }}</p>
{% endfor %}
π Read : docs/en/06-templates.md for complete syntax
Full Documentation : ORM Guide
Use SeaORM with Django-like pattern:
impl_objects!(User);
let users = User::objects
.filter(active.eq(true))
.all(&db)
.await?;
π Read : docs/en/07-orm.md for advanced queries
Full Documentation : Middleware Guide
Integrated security middleware:
π Read : docs/en/08-middleware.md for configuration
Full Documentation : Flash Messages Guide
Temporary messages for users:
success!("Operation successful!");
error!("An error occurred");
warning!("Warning!");
π Read : docs/en/09-flash-messages.md for details
Full Documentation : Examples Guide
Complete usage examples:
π Read : docs/en/10-examples.md for complete examples
# Unit tests
cargo test --lib
# Integration tests
cargo test --test integration_tests
# All tests
cargo test --all
Results: 36/36 tests passing β
See PROJECT_STATUS.md for more details.
MIT License - see SECURITY.md
The Runique framework is stable, tested and documented, ready for production use.
Start now β Installation
π Available in: English | π«π· FranΓ§ais