Ce qu'il reste à faire
La doc et la landing décrivent le flux cible : pip install blueprint-modular && bpm run app.py. Pour que cela fonctionne réellement, les chantiers suivants restent à réaliser.
1. Package Python installable
- Nom sur PyPI — Publier un package nommé
blueprint-modular(ou équivalent) sur PyPI, ou documenter l’installation depuis le dépôt Git / en local. - Configuration du package — Ajouter
pyproject.toml(ousetup.py) à la racine du repo : métadonnées, dépendances, et point d’entrée pour la commandebpm. - Module
bpm— Le dossierbpm/existe déjà (refs, registry, décorateurs). Y intégrer le futur CLI et les APIs composants côté Python.
2. Commande bpm run
- Point d’entrée CLI — Déclarer dans le package une console script
bpmqui accepte des sous-commandes (run, éventuellementinit). bpm run app.py— Exécuter le script Pythonapp.pydans un environnement où les appels du typebpm.title(...),bpm.button(...), etc. sont interceptés et convertis en arbre de rendu (ou en messages vers le frontend).- Serveur web — Démarrer un serveur HTTP (ex. sur un port local) qui sert une page HTML/JS embarquant les composants BPM (frontend React) et qui reçoit les mises à jour d’état (refs, clics, etc.).
3. Protocole frontend / backend
- Premier chargement — Le serveur exécute une fois
app.py(ou le script cible), collecte le rendu (arbres de composants ou sérialisation), et renvoie une page qui affiche ce rendu (ex. via la librairie Reactfrontend/bpm). - Interactions — Clics, changements de champs, etc. : le frontend envoie des événements au backend ; le backend met à jour les refs (
bpm.ref), relance éventuellement des parties du script ou du graphe de dépendances, et renvoie les mises à jour de rendu (réactivité granulaire) ou une nouvelle page (re-run complet selon la phase). - WebSocket ou requêtes HTTP — Choisir un protocole (long polling, SSE, WebSocket) pour garder une connexion et pousser les mises à jour sans rechargement complet.
4. APIs Python côté app (bpm.title, bpm.button, etc.)
- Implémentation des composants — Pour chaque composant documenté (title, metric, table, button, toggle, panel, etc.), implémenter la fonction Python qui enregistre un nœud de rendu ou envoie la description au frontend.
- Session state —
bpm.session_state(ou équivalent) pour persister les valeurs entre les runs ou entre les requêtes. - Rerun — Mécanisme
bpm.rerun()(ou déclenchement automatique après mise à jour de refs) pour réexécuter tout ou partie du script.
5. Optionnel : bpm init
- Sous-commande qui génère un squelette de projet (ex.
app.py, structure de dossiers, config minimale) pour démarrer une nouvelle app.
Résumé
Pour que pip install blueprint-modular && bpm run app.py marche en vrai : (1) package publié ou installable avec point d’entrée bpm, (2) implémentation de bpm run <script> (exécution du script + serveur web), (3) protocole entre ce serveur et le frontend (HTML/JS/React BPM), (4) implémentation des APIs Python des composants et du session state. La doc, la landing et la librairie de composants React sont en place ; le runtime Python et le pont avec le front restent à développer.
Voir aussi : Installation, FAQ, dépôt GitHub.