🚀 Runique — Framework Rust inspiré de Django
Runique est un framework web construit sur Axum, axé sur les formulaires type-safe, les middlewares de sécurité, le rendu de templates, l'intégration ORM et un workflow d'administration généré par code.
État actuel : développement actif. La source de vérité du framework est la crate
runique.demo-appest utilisée comme application de validation/test pour le comportement du framework.
🌍 Langues : English | Français
Ce que contient ce dépôt
runique/→ crate du framework (produit principal)demo-app/→ application de test/validation pour le développement du frameworkdocs/→ documentation EN/FR
Version du workspace (source de vérité) : 1.1.53.
Capacités principales
- Système de formulaires type-safe (
forms, extracteurs, validateurs, renderers) - Macros de routage et helpers d'URL
- Intégration des templates Tera et helpers de contexte
- Middlewares de sécurité (CSRF, CSP, allowed hosts, sanitisation, auth/session)
- Intégration de SeaORM + outils de migration
- Système de messages flash
- Admin bêta (macro
admin!+ génération de CRUD par daemon)
Les principaux modules publics sont exposés depuis runique/src/lib.rs.
Installation
git clone https://github.com/seb-alliot/runique
cd runique
cargo build --workspace
cargo test --workspace
Guide détaillé : Installation
Utilisation rapide
use runique::prelude::*;
#[tokio::main]
async fn main() {
let config = RuniqueConfig::from_env();
let app = RuniqueApp::builder(config).build().await.unwrap();
app.run().await.unwrap();
}
CLI (commandes actuelles)
runique fournit :
runique new <name>runique start [--main src/main.rs] [--admin src/admin.rs]runique create-superuserrunique makemigrations --entities src/entities --migrations migration/src [--force false]runique migration up|down|status --migrations migration/src
⚠️ Avertissement La commande
makemigrationspermet de générer les tables SeaORM tout en respectant la chronologie du système de migrations. Pour garantir la cohérence du suivi des migrations, utilisez uniquement la CLI de SeaORM pour appliquer ou gérer les migrations. L'utilisation des commandes peut entraîner une désynchronisation.
Statut de l'admin (bêta)
Comportement du daemon admin dans start :
- vérifie si
.with_admin(...)existe danssrc/main.rs - démarre le watcher admin si activé
- sinon quitte avec un message explicite
Les ressources admin sont déclarées dans src/admin.rs via admin!.
Workflow :
- parser les déclarations
admin! - générer le code admin dans
src/admins/ - rafraîchir automatiquement lors des modifications grâce au mode watcher
Limites actuelles de la bêta :
- permissions principalement au niveau des ressources
- écrasement du dossier généré (
src/admins/) - renforcement progressif encore en cours
Documentation admin : Admin
Features et bases de données supportées
Features par défaut :
ormall-databases
Backends sélectionnables :
sqlitepostgresmysqlmariadb
Snapshot tests et couverture
-
Tests rapportés : 1731/1731 réussis
-
Snapshot de couverture (
2026-03-01, packagerunique) :- Fonctions : 76.66%
- Lignes : 71.04%
- Régions : 67.22%
Commande utilisée pour la couverture :
cargo llvm-cov --tests --package runique --ignore-filename-regex "admin" --summary-only
Sessions
CleaningMemoryStore remplace le MemoryStore par défaut avec un nettoyage automatique des sessions expirées, un système de watermarks à deux niveaux (128 Mo / 256 Mo) et une protection prioritaire des sessions à valeur.
- Low watermark : purge asynchrone des sessions anonymes expirées
- High watermark : purge d'urgence synchrone + refus 503 si toujours dépassé
protect_session(&session, duration_secs)— protège une session anonyme jusqu'à un timestamp futur- Clé
user_id— protège automatiquement les sessions authentifiées
Documentation complète : Sessions
Variables d'environnement
Tout le comportement est configurable via .env. Variables principales :
RUNIQUE_SESSION_CLEANUP_SECS=60
RUNIQUE_SESSION_LOW_WATERMARK=134217728
RUNIQUE_SESSION_HIGH_WATERMARK=268435456
SECRET_KEY=votre-cle-secrete
DATABASE_URL=sqlite://db.sqlite3
Référence complète : Variables d'environnement
Carte de la documentation
- Installation
- Architecture
- Configuration
- Routage
- Formulaires
- Model/Schema
- Templates
- ORM
- Middlewares
- Flash Messages
- Exemples
- Admin bêta
- Sessions
- Variables d'environnement
Ressources
Licence
MIT — see LICENSE