# Contribuer à libreDecision ## Environnement ```bash # Backend (Python 3.11+) cd backend python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt alembic upgrade head uvicorn app.main:app --host 0.0.0.0 --port 8002 --reload # Frontend (Node 20+) cd frontend npm install npm run dev ``` ## Conventions - **UI** : français — **Code** : anglais (variables, commentaires, docstrings) - **CSS** : scoped, sans bordures (`border: none`), profondeur via `box-shadow` - **Composants** : `pathPrefix: false` — noms courts, auto-import - **API** : versionnée `/api/v1/`, Pydantic v2, async partout - **Ports stricts** : frontend=3002, backend=8002 — jamais de fallback ## Architecture toolbox Chaque section expose une `` avec : - Contenu principal (slot `#default`) - Boîte à outils sticky (slot `#toolbox`) — 30rem, flottante, zéro scroll Composants toolbox : - `ToolboxSection` : accordéon collapsible générique - `ToolboxVignette` : carte compacte avec bullets toggleables - `toolbox/ContextMapper` : recommandeur de méthode (4 questions → méthode optimale) - `toolbox/SocioElection` : guide élection sociocratique + advice process - `toolbox/WorkflowMilestones` : jalons de protocole (Ostrom) ## Tests ```bash cd backend && pytest tests/ -v ``` 186 tests, zéro dette technique acceptée depuis le sprint 1. ## Formule de vote inertiel `R = C + B^W + (M + (1-M)·(1-(T/W)^G))·max(0, T-C)` Voir `docs/content/dev/` pour la documentation complète.