MELODI est un ERP (Progiciel de Gestion Intégré) modulaire et hautement extensible, écrit entièrement en Python.
Originellement basé sur Flask, l'architecture a été migrée vers Quart pour exploiter la puissance de l'asynchrone (async/await), offrant des performances accrues et une meilleure gestion de la concurrence pour les applications d'entreprise volumineuses.
- Architecture Modulaire : Chaque fonctionnalité métier est encapsulée dans un module autonome (
modules/). - Web-Ready et 100% Asynchrone : Basé sur Quart (ASGI), permettant des WebSocket natifs et des requêtes I/O non bloquantes.
- Extensible sans modifier le cœur : Système de Hooks, d'Actions, et d'Événements pour interagir entre modules sans couplage fort.
- Migrations DB Automatisées : Système de Migration transactionnel intégré qui exécute séquentiellement les scripts SQL de vos modules (dossier
migrations/). - Interface d'administration intégrée : Un module
basefournit tout le socle (connexion, tableau de bord, gestions des modules). - Internationalisation (i18n) : Support multi-langues natif pour tous les modules.
- UI Réactive : Intégration de
MelodiJSpour le rendu réactif (type Vue.js) sans processus de build lourd.
- Python 3.10 ou supérieur (Indispensable pour l'asynchrone évolué de Quart).
- Création de l'environnement et installation
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- Démarrage du serveur Quart
# Pour le développement
python3 main.py(Vous pouvez exécuter l'application avec des serveurs ASGI de production comme Hypercorn ou Uvicorn si besoin).
- Environnement et installation
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt- Démarrage
python main.pydocker compose up --buildL'URL d'accès par défaut est : http://localhost:8080.
L'organisation des dossiers favorise la stricte séparation entre le socle technique et les règles métiers :
core/: Le cœur du framework. Gère le routeur Quart (WebRouter,APIRouter), la résolution des dépendances (ModuleManager), la base de données asynchrone, et les événements (hooks,listeners). Ce dossier ne doit théoriquement jamais être modifié pour vos besoins métiers.base/: Le module système. Fournit le layout d'administration, l'authentification (UserService), la gestion des pages d'accueil, et le gestionnaire des autres modules.modules/: Vos modules métiers personnalisés. C'est ici que vous créerez des dossiers de modules contenant uninfos.jsonet un fichiermodule.py.config/: Configuration globale (ex.modules_on.jsongérant la liste d'activation).storage/: Stockage des fichiers statiques générés au runtime, bases SQLite ou logs.docs/: Documentation approfondie.
Une documentation exhaustive est disponible au format HTML :
👉 Ouvrir la documentation docs/index.html dans votre navigateur.
Vous y trouverez :
- Le tutoriel de Création de Module de A à Z.
- Explication des interfaces APIRouter vs WebRouter.
- Utilisation des Middlewares.
- Manipulation du Dashboard (Widgets et Menus).
- Les mécanismes de Communication Inter-Modules (ActionManager, HookManager, EventListener).
- Et bien plus !
Double licence : AGPL v3 (Usage gratuit communautaire sous même licence) et Commerciale (Fermeture du code propriétaire). Contact : [email protected]