Framework web applicatif Python minimaliste, pédagogique et extensible.
Project description
Forge
Le framework web Python que vous pouvez lire en entier.
Forge est un framework web applicatif Python, MVC et explicite, pour des applications de production dont vous comprenez et auditez chaque ligne. Pas de magie cachée, SQL visible, sécurisé par défaut, runtime minimal (cinq dépendances). HTTPS et Jinja2 intégrés.
Statut
Forge 1.0.0-rc.1, release candidate (préversion finale avant 1.0.0 stable).
- Paquet PyPI :
forge-mvc - Préversion PEP 440 (
1.0.0rc1) : installation avec--pre - Python 3.12+
- API publique gelée pour la 1.0.0
Liens utiles
| Ressource | Lien |
|---|---|
| Site officiel | forgemvc.com |
| Documentation | forgemvc.com/docs/forge/ |
| Installation | forgemvc.com/docs/forge/install/ |
| Windows + WSL | forgemvc.com/docs/forge/install/windows-wsl/ |
| Bonjour Forge | forgemvc.com/docs/forge/bonjour-forge/ |
| Référence CLI | forgemvc.com/docs/forge/reference/cli-commands/ |
| PyPI | pypi.org/project/forge-mvc/ |
| Retours terrain | forgemvc.com/docs/forge/testing/ |
Installation rapide
pipx install --pip-args="--pre" forge-mvc
forge --version
Créer un projet et lancer le serveur de développement :
forge new forge-demo
cd forge-demo
source .venv/bin/activate
forge run
forge new prépare tout le projet : squelette, environnement Python avec
forge-mvc, fichier env/dev, certificat HTTPS de développement et dépôt Git.
Les premiers paliers tournent sans base de données ; MariaDB et forge db:init
ne deviennent nécessaires qu'à partir du palier « Première base SQL ».
Pour construire pas à pas votre première application, suivez le parcours cœur Welcome Forge : forgemvc.com/docs/forge/starters/welcome-forge/.
La documentation complète d'installation est sur forgemvc.com/docs/forge/install/.
Exemple minimal
# mvc/routes.py
from mvc.controllers.home_controller import HomeController
routes = [
("GET", "/", HomeController.index, {"public": True}),
]
# mvc/controllers/home_controller.py
from core.http.response import Response
class HomeController:
@staticmethod
def index(request):
return Response.text("Bonjour Forge")
Pourquoi Forge ?
Forge fait le pari inverse de la mode : pas de magie, pas d'ORM, pas d'async imposé. En échange, vous obtenez une application que vous comprenez, auditez et maintenez des années, sécurisée par défaut et reposant sur un runtime minuscule.
- MVC serveur explicite, sans magie cachée
- SQL visible, pas d'ORM imposé
- Générateurs prudents : Forge ne réécrit pas votre code
- Documentation officielle complète
- Sécurité web par défaut (CSRF, Argon2id, headers, autoescape)
- Noyau minimal, opt-ins
- Python 3.12+, dépendances explicites
Opt-ins officiels
| Opt-in | Rôle | Maturité |
|---|---|---|
forge-mvc-rbac |
Rôles et permissions déclaratives | RC |
forge-mvc-workflow |
Cycles de vie applicatifs (statuts, transitions) | RC |
forge-mvc-stats |
Agrégats et compteurs d'événements | RC |
forge-mvc-mfa |
Authentification multi-facteurs (TOTP) | RC |
forge-mvc-files |
Upload générique : écriture sécurisée, storage, service de fichiers (HTTP Range) | RC |
forge-mvc-images |
Traitement et gestion applicative des images (Pillow), dépend de forge-mvc-files |
RC |
forge-mvc-audio |
Upload, sondage, transcodage MP3 et lecture en streaming HTTP Range | RC |
forge-mvc-video |
Upload, transcodage MP4 (H.264/AAC) et lecture en streaming HTTP Range | RC |
forge-mvc-iot |
Réception/exposition de données IoT (MQTT, stockage, API HTTP) | RC |
forge-mvc-pivot |
Tables pivot avancées extraites du core | RC |
forge-mvc-mail |
Envoi de courriels extrait du core | RC |
forge-mvc-i18n |
Internationalisation : catalogues JSON, fallback, helper trans() (repli no-op du noyau) |
RC (publication à venir) |
forge-mvc-qrcode |
Génération de QR Codes (PNG/SVG) depuis du texte ou une URL, réponse HTTP servable depuis un contrôleur | RC (publication à venir) |
forge-mvc-settings |
Paramètres applicatifs persistés en MariaDB (table app_settings), API explicite get_setting/set_setting |
RC (publication à venir) |
forge-mvc-import-export |
Échange CSV : import (validation par champ, rapport d'erreurs, insertion via un callback) et export programmatique (to_csv) |
RC (publication à venir) |
forge-mvc-audit |
Journal d'audit applicatif (table audit_log, record_audit/get_audit_log), borné (pas un SIEM) |
RC (publication à venir) |
forge-mvc-jobs |
File de tâches de fond adossée à MariaDB (enqueue + worker drain/run_worker), sans broker ni async |
RC (publication à venir) |
forge-mvc-notifications |
Notifications in-app (table notifications, notify/get_notifications/mark_read) |
RC (publication à venir) |
forge-mvc-deploy |
Outillage de déploiement opt-in CLI-only : deploy:init (gabarits Nginx/systemd/WSGI) et deploy:check, sans API runtime (ADR-053) |
RC (publication à venir) |
forge-mvc-admin |
Back-office applicatif : CRUD générique sur les entités déclarées, auth + CSRF, RBAC optionnel (voir la roadmap Forge Admin) | RC (non publié) |
forge-mvc-testing |
Infrastructure de test partagée (FakeRequest + plugin pytest) pour tester Forge et ses opt-ins, y compris par des tiers (ADR-041) |
RC |
Chaque opt-in reste optionnel : le core Forge ne dépend d'aucun d'eux.
Seuls forge-mvc-rbac, forge-mvc-workflow et forge-mvc-stats sont inclus
dans l'extra forge-mvc[all]. Tous les autres opt-ins (mfa, files,
images, audio, video, iot, pivot, mail, i18n, qrcode, settings, import-export, audit, jobs, notifications, deploy) s'installent
explicitement et séparément, par exemple pip install --pre forge-mvc-rbac
ou pip install --pre forge-mvc-images. forge-mvc-i18n, forge-mvc-qrcode,
forge-mvc-settings, forge-mvc-import-export, forge-mvc-audit, forge-mvc-jobs, forge-mvc-notifications et forge-mvc-deploy ne sont pas encore publiés sur PyPI ; ils s'installent en éditable via
requirements-dev.txt.
Cette exclusion de [all] tient soit à
une dépendance lourde (MQTT paho-mqtt pour IoT, binaire système FFmpeg pour
Video et Audio, Pillow pour Images), soit à un choix de sécurité explicite
(mfa), soit à une absence de publication sur PyPI (i18n, qrcode).
Documentation
Toute la documentation est publiée sur forgemvc.com/docs/forge/ :
- Installation, démarrage rapide, tutoriels
- Référence de la CLI
forge - Entités, modèles, SQL et migrations
- Formulaires, validation, CSRF, sessions
- Modules opt-in (RBAC, workflow, stats, MFA, files, images, audio, IoT, Video, pivot, mail, i18n, QR Code)
- ADR et charte philosophique
Développement du framework
Pour contribuer à Forge directement :
git clone https://github.com/caucrogeGit/Forge.git
cd Forge
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .
python -m pip install -r requirements-dev.txt
Validations courantes avant un commit :
python -m pytest -x -q
python -m compileall -q .
ruff check .
mkdocs build --strict
Voir CHARTE_DOC.md et docs/adr/ pour
les principes et décisions architecturales.
Licence
Forge est distribué sous licence propriétaire / source disponible.
L'usage professionnel, commercial ou institutionnel nécessite un accord écrit préalable de Roger Lequette. La lecture, l'étude, l'évaluation personnelle et l'usage éducatif non commercial sont autorisés sans accord.
Forge n'est pas open source pendant sa phase de préversion (release candidate incluse). À partir de la version 1.0.0 stable, Forge bascule sous licence open source MIT, dès que les critères de stabilité sont réunis et au plus tard le 31 décembre 2026 (critères détaillés sur la page licence et la roadmap). Jusqu'à cette publication, la licence présente dans le dépôt fait foi.
Voir LICENSE pour les conditions complètes.
Auteur
Roger Lequette, forgemvc.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file forge_mvc-1.0.0rc1.tar.gz.
File metadata
- Download URL: forge_mvc-1.0.0rc1.tar.gz
- Upload date:
- Size: 367.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a0089a4416e3f61080fdd1bf332be64470a9b5baba8be49eba7c236c5349e05
|
|
| MD5 |
982dd38cadff55bfbfdb76bec0122885
|
|
| BLAKE2b-256 |
456f93c8ead14c93f2c396067e2a4291d5ba78abf029918dbbc0ab7119f808bf
|
File details
Details for the file forge_mvc-1.0.0rc1-py3-none-any.whl.
File metadata
- Download URL: forge_mvc-1.0.0rc1-py3-none-any.whl
- Upload date:
- Size: 452.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de0c403b6312f29adf72b4f43179ba06c3b93a0b71dc30c6db98c1853793b427
|
|
| MD5 |
1e77e47179a2bbecb8fbf4bcbc7329fc
|
|
| BLAKE2b-256 |
c8d8a8b70c09b09d2a04dac0e95e10aa67511033d60ef773e7892e3ab5e2c0f9
|