HTTP & routing
Requêtes, réponses, routes nommées et contrôleurs explicites.
Framework web applicatif Python.
Forge permet de créer rapidement des applications web MVC structurées, lisibles et maintenables, avec du SQL visible, des générateurs contrôlés, un front léger et un core pédagogique sans magie cachée.
$ forge doctor $ forge make:entity Contact --no-input # Décrire les champs dans mvc/entities/contact/contact.json $ forge build:model --dry-run $ forge build:model $ forge db:apply $ forge make:crud Contact
Forge vise les applications de gestion, les back-offices, les sites publics avec administration, les démonstrateurs pédagogiques et les projets où le code généré doit rester compréhensible.
Un core minimal pour bâtir des applications MVC Python, et des modules officiels installables séparément pour les besoins avancés.
Le cœur du framework fournit les briques génériques. Tout starter Forge n'est qu'un démonstrateur — le moteur reste dans le core.
Requêtes, réponses, routes nommées et contrôleurs explicites.
Structure claire : contrôleurs, modèles, vues, routes et formulaires.
Rendu serveur lisible, layouts publics/admin et composants simples.
Fichiers SQL auditable, sans ORM opaque imposé par défaut.
Une source canonique pour générer SQL, modèles et CRUD.
Migrations SQL versionnées, contrôlables et lisibles.
Back-office explicite, modifiable et non destructif.
Champs typés, validation serveur et messages clairs.
CSRF, sessions, headers HTTP, cookies durcis et audit complet.
Login, sessions, hachage Argon2id, vérification email et reset de mot de passe.
Uploads, images, variantes, galeries et suppression propre.
Transports interchangeables, templates, rendu et logs.
Tailwind officiel, HTMX recommandé, Alpine.js optionnel.
Traductions simples côté Python et côté Jinja.
Commandes pour générer, vérifier, initialiser et diagnostiquer.
Nginx, systemd, environnement prod et contrôles de déploiement.
Endpoints JSON explicites avec auth Bearer, sans transformer Forge en moteur d'API.
Distribués séparément sur PyPI. Installer un module se fait via
pip install forge-mvc-<module>
ou via extras
forge-mvc[mfa].
Authentification multi-facteurs : TOTP, codes de récupération, challenge à la connexion. Module forge-mvc-mfa.
Rôles, permissions fines, helpers Jinja et décorateurs @require_permission. Module forge-mvc-rbac.
Statuts et transitions applicatives : brouillon → publié → archivé. Module forge-mvc-workflow.
Tracking d'événements applicatifs génériques : page vues, clics, conversions. Module forge-mvc-stats.
Forge ne réinvente pas l'écosystème Python. Il s'appuie sur des standards éprouvés.
Langage de Forge — typage moderne, performance, async natif.
DocumentationMoteur SQL relationnel, schéma auditable, performant.
DocumentationTemplating serveur intégré au core — rendu lisible, layouts publics et admin.
DocumentationInteractivité progressive HTML-driven — recommandé pour les apps Forge.
DocumentationRéactivité ultra-légère côté client — optionnel.
DocumentationSystème d'utilities CSS — front officiel.
DocumentationForge automatise les répétitions, mais les fichiers restent visibles, auditables et modifiables.
1. JSON d'entité canonique
2. SQL visible et migrations
3. modèle *_base.py régénérable
4. modèle manuel préservé
5. contrôleur, formulaire et vues CRUD
6. application MVC maintenable
$ forge doctor $ forge make:entity Contact --no-input $ forge build:model --dry-run $ forge build:model $ forge db:apply $ forge make:crud Contact
{
"format_version": 1,
"entity": "Contact",
"table": "contact",
"fields": [
{ "name": "id", "sql_type": "INT", "primary_key": true },
{ "name": "nom", "sql_type": "VARCHAR(80)" },
{ "name": "email", "sql_type": "VARCHAR(120)" }
]
}
$ forge build:model --dry-run
[ÉCRIT] mvc/entities/contact/contact.sql
[ÉCRIT] mvc/entities/contact/contact_base.py
[PRÉSERVÉ] mvc/entities/contact/contact.py
[DRY-RUN] Aucun fichier modifié.
Deux parcours séparés : utiliser Forge pour créer une application, ou travailler sur le framework lui-même.
Pour installer la commande Forge, créer un projet et lancer le serveur de développement.
$ pipx install --pip-args="--pre" forge-mvc $ forge new MonApplication $ cd MonApplication $ forge doctor $ python app.py
Forge 1.0.0-beta.8 est une préversion — --pip-args="--pre" est requis.
Les modules opt-in s'installent depuis GitHub via requirements-dev.txt.
Pour cloner le dépôt, installer l'environnement de développement et lancer les validations.
$ git clone https://github.com/caucrogeGit/Forge.git $ cd Forge $ python -m venv .venv $ source .venv/bin/activate $ pip install -e . $ pytest $ mkdocs build --strict
forge deploy:check.
Voir le guide de déploiement.
Sur Windows, la voie recommandée est WSL2.
Guide Windows (WSL2).
Les starters prouvent les capacités du framework. Ils ne remplacent pas le core et ne dictent pas l'architecture métier.
Cycle complet d'un CRUD sur une entité : JSON, SQL, formulaire, contrôleur et vues.
Application de démonstration autour des sessions, du login/logout et des routes protégées.
Relations explicites, clés étrangères, tables pivots visibles et requêtes SQL lisibles.
Démonstrateur plus dense : dashboard, relations, sécurité applicative et données métier.
Forge marque l'ouverture du code source en lecture, étude et usage éducatif. Core minimal (HTTP, routing, sessions, templating, SQL visible, formulaires, CRUD), 4 modules officiels installables séparément (MFA, RBAC, Workflow, Stats), charte philosophique stable et 41 tickets livrés pendant la refonte.
Lire la roadmap →Stabilisation continue, raffinements de packaging (src layout standard), consolidation des APIs modules. Forge reste un framework explicite, pédagogique et durable.
Voir la roadmap →Forge est fortement documenté : tutoriels, guides de modules, référence CLI, sécurité production, politique de release et guide de contribution.
Plus de 9000 tests — unitaires, documentaires, E2E, sécurité et MariaDB opt-in.