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.
Le cœur du framework fournit les briques génériques. Les starters ne sont que des démonstrateurs : 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, garde-fous HTTP et chemins durcis.
Permissions fines sans imposer une table utilisateur au core.
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.
Forge automatise les répétitions, mais les fichiers restent visibles, auditable 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 forge-mvc $ forge new MonApplication $ cd MonApplication $ forge doctor $ python app.py
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.
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.
Le socle initial est validé jusqu’à la Phase 4 RBAC : MVC, CLI, entités, SQL, migrations, CRUD, formulaires, média, mail, front léger, i18n et permissions fines.
Lire la roadmap →Forge possède déjà le RBAC générique. La prochaine brique doit fournir une identité utilisateur optionnelle, moderne et raccordable au RBAC, sans imposer un modèle métier.
Voir le RBAC →La landing reste courte. Les détails, les questions fréquentes, les commandes et les limites sont dans la documentation.