Yvv f56d84e76b Mandats : origin→FK identité + nomination auto + boutons + tests intégration
- origin TEXT → origin_id UUID FK duniter_identities (migration e3f4a5b6c7d8)
- GET /auth/identities?q= : recherche d'identités par nom/adresse
- MandateCreate.nomination_mode : auto (auto-assign auteur), collective, postpone
- Wizard new.vue : champ origine = picker identité, checkbox "Démarrer maintenant"
- [id].vue : modal "Assigner" = search-picker (résout UUID vs adresse SS58), affiche
  origin_display_name + mandatee_display_name, inputs natifs (<input>/<textarea>)
- Erreurs API visibles dans l'UI (plus de catch silencieux)
- test_mandate_flows.py : 17 tests intégration SQLite réels (origin, nomination,
  assign, lifecycle, revocation, interactions croisées) — 241 tests total OK

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 20:48:27 +02:00

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.

S
Description
No description provided
Readme 1.7 MiB
Languages
Python 46.2%
Vue 46.1%
TypeScript 6.7%
CSS 0.6%
Dockerfile 0.3%