Forge
v1.0.0-rc.1· Python 3.12+· MariaDB 11.8· Node.js 24· Tailwind CSS 4.3· Jinja2 3.1· HTMX· Alpine.js

Une forge pour les créer toutes.

Framework web applicatif Python, explicite et auditable.

Nouveautés 1.0.0-rc.1

API publique gelée

Forge entre en release candidate : l'API publique du cœur est gelée pour la 1.0. Le code que vous écrivez aujourd'hui contre la RC reste valide en 1.0.0 stable, sans rupture d'API.

Tous les opt-ins en Beta

Toutes les briques opt-in officielles passent en statut Beta. Chacune s'installe séparément et le cœur ne dépend d'aucune : votre application n'embarque que ce qu'elle utilise vraiment.

Nouvelles briques applicatives

Cinq nouveaux opt-ins couvrent des besoins courants, adossés à MariaDB et sans magie : settings (paramètres), audit (journal applicatif), jobs (file de tâches de fond), notifications in-app et import/export CSV.

Déploiement en opt-in

Le déploiement quitte le cœur pour l'opt-in CLI forge-mvc-deploy : forge deploy:init génère une configuration Nginx, systemd et Gunicorn à adapter, forge deploy:check valide l'environnement de production.

Installer Forge.

Poste Linux

Installez Forge en quelques minutes sur Debian, Ubuntu ou Linux Mint.

  1. 1 Installation propre avec pipx, sans modifier le Python système.
  2. 2 Projet prêt à lancer avec forge new.
  3. 3
    Modules à la demande :
Poste Windows 10/11 + WSL

Développez avec Forge sous Windows grâce à WSL et Ubuntu 24.04.

  1. 1 Linux dans Windows, directement, sans machine virtuelle complète.
  2. 2 Environnement isolé dans Ubuntu, adapté à Forge.
  3. 3 Une fois WSL prêt, suivez la procédure du poste Linux pour installer Forge et créer votre projet.

Starters

Les starters sont des projets pédagogiques pour apprendre Forge pas à pas.

Bonjour Forge

La progression cœur : du premier affichage texte jusqu'à un CRUD complet à SQL visible, palier par palier (HTTP, vues, formulaires, base de données).

Forge IoT

Recevoir, stocker et exposer des mesures de capteurs : configuration MQTT, lecture des événements, API HTTP JSON et subscriber temps réel.

Forge Vidéo

La chaîne vidéo complète, brique par brique : upload, lecture en streaming, suivi d'état, sondage et transcodage MP4.

Forge Images

Téléverser, générer des variantes, attacher à une entité, gérer galerie et couverture, puis sécuriser l'upload contre les images piégées.

Forge Fichiers

La brique d'upload générique : stockage sécurisé, service de fichiers, validation, limitation de débit et chemins anti-traversal.

Forge Audio

Téléverser un audio, le lire en streaming, sonder ses métadonnées et le transcoder en MP3, sans état.

Forge MFA

Le second facteur de bout en bout : secret TOTP, enrôlement, challenge de connexion, codes de récupération et durcissement.

Forge RBAC

Le contrôle d'accès par rôles : contrat déclaratif, vérification de permission, garde de route, helper de gabarit et résolution par utilisateur.

Forge Workflow

Statuts et transitions applicatives : déclarer les passages autorisés, les vérifier, puis afficher des badges de statut.

Forge Stats

Le tracking d'événements à SQL visible : schéma, insertion, validation, consultation et normalisation des lignes.

Forge Mail

Composer et envoyer des emails : transports interchangeables (console, SMTP, log), templates Jinja et diagnostic du module.

Forge i18n

Internationaliser une application : catalogues JSON, locale par défaut et fallback, helper trans() dans les templates.

Forge Pivot

Les tables pivot enrichies : associations many_to_many avec attributs, et génération make:pivot-crud.

Forge QR Code

Générer des QR Codes PNG ou SVG depuis du texte ou une URL, et les servir depuis un contrôleur.

Forge Settings

Persister des paramètres applicatifs en base : écrire et lire des valeurs typées via get_setting et set_setting.

Forge Import/Export

Échanger des données en CSV : import validé champ par champ avec rapport d'erreurs, et export programmatique.

Forge Audit

Tenir un journal d'audit applicatif : enregistrer et consulter des événements, borné et lisible.

Forge Jobs

Une file de tâches de fond adossée à MariaDB : enqueue et worker explicite, sans broker ni async.

Forge Notifications

Des notifications in-app : notifier un utilisateur, lister puis marquer comme lues.

Forge Déploiement

Préparer la mise en production : générer la configuration Nginx, systemd et Gunicorn, puis vérifier l'environnement.

Forge Admin

Un back-office applicatif : CRUD générique sur les entités déclarées, avec auth, CSRF et RBAC optionnel.

Forge Façades

Construire vos propres façades applicatives (Session, Cookies, Flash) au-dessus du noyau minimal, sans alourdir Forge.

Forge Markdown

Rédiger une page de documentation Forge palier par palier : titres, listes, tableaux, encadrés, code, onglets, diagrammes et toutes les extensions Markdown.

Ressources Forge.

Le cœur de Forge.

Modules officiels installables séparément.

forge-mvc-mfa

Authentification multi-facteurs : TOTP, codes de récupération, challenge à la connexion.

forge-mvc-rbac

Rôles, permissions fines, helpers Jinja et décorateurs @require_permission.

forge-mvc-workflow

Statuts et transitions applicatives : brouillon → publié → archivé.

forge-mvc-stats

Tracking d'événements applicatifs génériques : page vues, clics, conversions.

forge-mvc-files

Upload générique : écriture sécurisée anti-traversal, stockage et service de fichiers (HTTP Range).

forge-mvc-images

Traitement d'images (Pillow) : variantes, galerie, couverture et garde anti-image-bombe à l'upload.

forge-mvc-iot

Réception et exposition de données IoT via MQTT : subscriber, stockage d'événements, API JSON.

forge-mvc-video

Upload, transcodage MP4 (H.264/AAC) et lecture vidéo en streaming HTTP Range.

forge-mvc-audio

Upload, sondage (ffprobe), transcodage MP3 (ffmpeg) et lecture audio en streaming HTTP Range.

forge-mvc-mail

Envoi d'emails : composition, transports interchangeables (console, SMTP, log), templates Jinja et CLI mail:*.

forge-mvc-pivot

Tables pivot enrichies : associations many_to_many avec attributs, générateur make:pivot-crud.

forge-mvc-i18n

Internationalisation : traduction par catalogues JSON, locale par défaut et fallback, helper trans() pour les templates.

forge-mvc-qrcode

Génération de QR Codes PNG ou SVG depuis du texte ou une URL, réponse HTTP servable depuis un contrôleur.

forge-mvc-settings

Paramètres applicatifs persistés en MariaDB (table app_settings), API explicite get_setting et set_setting.

forge-mvc-import-export

Échange CSV : import validé par champ avec rapport d'erreurs, et export programmatique to_csv.

forge-mvc-audit

Journal d'audit applicatif (table audit_log) : record_audit et get_audit_log, borné, pas un SIEM.

forge-mvc-jobs

File de tâches de fond adossée à MariaDB : enqueue et worker explicite, sans broker ni async.

forge-mvc-notifications

Notifications in-app (table notifications) : notify, get_notifications, mark_read.

forge-mvc-deploy

Outillage de déploiement CLI-only : deploy:init (Nginx, systemd, wsgi.py) et deploy:check.

forge-mvc-admin

Back-office applicatif opt-in : CRUD générique sur les entités déclarées, auth, CSRF et RBAC optionnel.

Générer sans masquer.

Forge automatise les répétitions, mais les fichiers restent visibles, auditables et modifiables.

Chaîne de génération

1. Tout part d'un fichier JSON d'entité canonique, source unique du modèle.

2. La commande forge entity:validate vérifie le contrat avant toute génération.

3. Le SQL et les migrations demeurent visibles et lisibles.

4. Le modèle *_base.py est régénéré à chaque exécution.

5. Le modèle manuel, lui, est toujours préservé.

6. Le contrôleur, le formulaire et les vues CRUD sont ensuite échafaudés.

7. Il en résulte une application MVC claire et maintenable.

$ forge new mon-app
$ cd mon-app
$ forge make:entity Contact
$ forge make:crud Contact --dry-run
$ forge make:crud Contact

Positionnement

Ce que Forge est
  • +Plus structurant que Flask
  • +Moins massif que Django
  • +Moins API-first que FastAPI
  • +Plus explicite qu'un framework magique
  • +SQL visible par défaut
  • +Génération contrôlée et réversible
Ce que Forge n'est pas
  • -Pas un clone de Django, Symfony ou Laravel
  • -Pas un ORM complet imposé
  • -Pas une SPA React/Vue intégrée au core
  • -Pas une boîte noire qui cache le SQL
  • -Pas une plateforme SaaS multi-tenant
  • -Pas encore stable (release candidate)

Contact

Pour toute question sur Forge, retour d'usage, remontée de bug ou demande de licence.

Roger Lequette · forgemvc@gmail.com

Écrire à Forge