- Boîte à outils élargie à 30rem (×1.75) — flottante sticky, zéro scroll visible - ToolboxSection : nouveau composant accordéon générique (chevron, défaut fermé) - ToolboxVignette : titre cliquable, bullets/actions cachés par défaut - 4 pages : ContextMapper/SocioElection/WorkflowMilestones/inertie → ToolboxSection - Suppression doublon SectionLayout (common/) — conflit de nommage résolu - Renommage complet Glibredecision → libreDecision dans configs/docker/CI - README.md + CONTRIBUTING.md ajoutés Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
Contribuer à libreDecision
Environnement
# 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 viabox-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 <SectionLayout> avec :
- Contenu principal (slot
#default) - Boîte à outils sticky (slot
#toolbox) — 30rem, flottante, zéro scroll
Composants toolbox :
ToolboxSection: accordéon collapsible génériqueToolboxVignette: carte compacte avec bullets toggleablestoolbox/ContextMapper: recommandeur de méthode (4 questions → méthode optimale)toolbox/SocioElection: guide élection sociocratique + advice processtoolbox/WorkflowMilestones: jalons de protocole (Ostrom)
Tests
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.