a9e586cda15e918a076444675dc4c5e43b0a9969
- nuxt.config: extends ['../../yvv-nuxt-base'] - useMood.ts: délègue à useMood(moods) du layer, exporté useLibreMood (évite la collision avec l'auto-import du layer) - MoodSwitcher.vue + app.vue: appellent useLibreMood() - moods.css inchangé (couleurs = identité projet) Mécanisme partagé (application DOM, persistance, sync color-mode) mutualisé sans toucher le contrat CSS. Vérifié headless (Playwright) : 4 moods × light/dark × desktop/mobile OK, persistance au reload OK, zéro erreur JS, zéro régression. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
libreDecision
Plateforme de décisions collectives pour la communauté Duniter/G1. Boîte à outils gouvernance multi-collectifs, architecture white-label.
Stack
- Frontend : Nuxt 4 + Vue 3 + Pinia + UnoCSS (port 3002)
- Backend : Python FastAPI + SQLAlchemy async + SQLite (port 8002)
- Auth : Duniter V2 Ed25519 challenge-response
- Sanctuaire : IPFS (kubo) + hash on-chain (system.remark)
Démarrage
# Backend
cd backend && .venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8002 --reload
# Frontend
cd frontend && npm run dev
Sections
- Décisions : processus de vote collectif avec boîte à outils (ContextMapper, consentement, advice process)
- Mandats : élection sociocratique, cycle de mandat, révocation
- Documents : documents de référence sous vote permanent, niveaux d'inertie, sanctuaire IPFS
- Protocoles : protocoles opérationnels, jalons de workflow, formules de vote
Architecture
Voir CLAUDE.md pour les conventions et docs/content/dev/ pour la documentation technique.
Description
Languages
Python
46.3%
Vue
46.1%
TypeScript
6.6%
CSS
0.6%
Dockerfile
0.3%