Fondamentaux

Le modèle mental BPM, le cycle de rendu, les refs et le design system.

Le modèle mental BPM

BPM fonctionne comme une déclaration : vous décrivez ce que vous voulez afficher, BPM s'occupe du rendu. Pas de HTML, pas de callbacks manuels.

Le cycle de rendu

[ Diagramme du cycle : lancement → exécution script → nœuds → HTML ; clic → requête → session_state → re-run ]

Les refs réactives ($)

Les refs permettent de garder un état réactif : seule la partie de l'interface qui lit la ref se met à jour.

import bpm

counter = bpm.ref("counter", default=0)
bpm.metric("Clics", counter.get())

if bpm.button("Incrémenter"):
    counter.set(counter.get() + 1)

# Seul le bpm.metric se rafraîchit, pas toute la page.
Note — Aujourd'hui, chaque clic déclenche un re-run complet du script (comme Streamlit). Un mode WebSocket ou SSE est prévu pour mettre à jour uniquement les composants concernés, sans rechargement complet.

Les décorateurs (@)

BPM prévoit des décorateurs pour structurer l'app : pages, sidebar, cache.

@bpm.page("rapport")
def rapport():
    bpm.title("Rapport mensuel")
    bpm.table(df)

@bpm.sidebar
def navigation():
    bpm.select("Page", ["accueil", "rapport"])

Ces APIs sont en cours d'alignement entre le runtime Python et le frontend.

Le fichier app.config.js

Pour les apps qui utilisent le frontend React BPM, la configuration se fait via app.config.js. Les 4 clés principales : title, theme, sidebar, pages. Voir Config.

Design system bpm.*

Tous les composants partagent les mêmes tokens CSS (couleur primaire, espacements, typo). Personnaliser via bpm.theme(primary_color="#d4af37") ou en surchargeant les variables dans theme.css (ou doc.css).

Et maintenant ?

Une question ? Consultez la FAQ et la Ce qu'il reste à faire.