# Glibredecision Plateforme de decisions collectives pour la communaute Duniter/G1. ## Stack - **Frontend**: Nuxt 4 + Nuxt UI v3 + Pinia + UnoCSS (port 3002) - **Backend**: Python FastAPI + SQLAlchemy async + PostgreSQL asyncpg (port 8002) - **Auth**: Duniter V2 Ed25519 challenge-response - **Sanctuaire**: IPFS (kubo) + hash on-chain (system.remark) ## Commands - Backend: `cd backend && uvicorn app.main:app --port 8002 --reload` - Backend tests: `cd backend && pytest tests/ -v` - Frontend: `cd frontend && npm run dev` - Frontend build: `cd frontend && npm run build` - Migrations: `cd backend && alembic upgrade head` - Docker: `docker compose -f docker/docker-compose.yml up` ## Conventions - French for UI text and documentation - English for code (variable names, comments, docstrings) - API versioned under `/api/v1/` - Pydantic v2 for all schemas - Async everywhere (SQLAlchemy, FastAPI) - Ed25519 signatures for vote integrity