diff --git a/README.md b/README.md index 33ec4e3..7266f29 100644 --- a/README.md +++ b/README.md @@ -1 +1,179 @@ -# konstitisyon.la \ No newline at end of file +# konstitisyon.la + +Plateforme collaborative dédiée à la rédaction citoyenne d'une constitution. Ce projet vise à permettre aux citoyens de participer activement au processus de rédaction constitutionnelle à travers un système transparent et démocratique. + +## Vision du projet + +L'objectif de konstitisyon.la est de démocratiser le processus de rédaction constitutionnelle en : +- Permettant à chaque citoyen de proposer des modifications +- Facilitant le débat et la discussion autour des propositions +- Assurant la transparence du processus de rédaction +- Gardant une trace de l'évolution du texte +- Permettant un vote démocratique sur les propositions + +## Fonctionnalités principales + +### Rédaction collaborative +- Proposition de modifications du texte constitutionnel +- Système de versionnage pour suivre l'évolution +- Comparaison visuelle des différentes versions +- Historique complet des modifications + +### Participation citoyenne +- Système de vote sur les propositions +- Discussion et débat sur les modifications +- Transparence totale du processus +- Accessibilité pour tous les citoyens + +### Gestion démocratique +- Processus de validation communautaire +- Système de vote (+1/-1) sur les propositions +- Traçabilité des décisions + +## Architecture technique + +### Technologies +- **Frontend**: Next.js 13+ avec App Router +- **UI**: Material-UI (MUI) +- **Backend**: Directus (Headless CMS) +- **Authentification**: NextAuth.js +- **Base de données**: SQLite (via Directus) + +### Structure du projet +``` +konstitisyon.la/ +├── app/ # Routes et pages Next.js +├── components/ +│ ├── konstitisyon/ # Composants liés à la constitution +│ └── versions/ # Gestion des versions et votes +├── lib/ # Utilitaires et configurations +└── public/ # Assets statiques +``` + +## Modèle de données + +### Schéma de la base de données +```mermaid +erDiagram + TITRES ||--o{ ARTICLES : contient + TITRES ||--o{ COMMENTAIRES : discute + TITRES { + uuid id PK + string status + uuid user_created FK + datetime date_created + text contenu + integer numero + } + ARTICLES { + uuid id PK + string status + uuid user_created FK + datetime date_created + text contenu + integer numero + uuid titre FK + } + COMMENTAIRES { + uuid id PK + string status + uuid user_created FK + datetime date_created + text contenu + uuid titre FK + } + VOTES { + uuid id PK + uuid user_created FK + datetime date_created + datetime date_updated + uuid content_version_id FK + integer vote + } + DIRECTUS_VERSIONS ||--o{ VOTES : evalue + DIRECTUS_USERS ||--o{ VOTES : cree + DIRECTUS_USERS ||--o{ COMMENTAIRES : ecrit + DIRECTUS_USERS ||--o{ ARTICLES : redige + DIRECTUS_USERS ||--o{ TITRES : redige +``` + +### Structure constitutionnelle +La constitution est organisée hiérarchiquement : +- **Titres** : Sections principales de la constitution + - `numero`: Numéro du titre + - `contenu`: Texte du titre + - `status`: État du titre (brouillon, publié) + +- **Articles** : Contenus détaillés sous chaque titre + - `numero`: Numéro de l'article + - `contenu`: Texte de l'article + - `titre`: Référence au titre parent + - `status`: État de l'article + +### Système participatif +- **Commentaires** : Discussions sur les titres + - `contenu`: Texte du commentaire + - `titre`: Titre concerné + - `user_created`: Auteur du commentaire + +- **Votes** : Système d'évaluation des versions + - `content_version_id`: Version concernée + - `vote`: Valeur du vote (+1 ou -1) + - `user_created`: Identifiant du votant + - `date_created`: Date du vote + +## Installation et développement + +### Prérequis +- Node.js 16+ +- Yarn +- Instance Directus + +### Configuration +```env +DIRECTUS_API_URL= # URL de l'API Directus +NEXTAUTH_URL= # URL de base de l'application +NEXTAUTH_SECRET= # Secret pour NextAuth +``` + +### Installation +```bash +# Installation des dépendances +yarn install + +# Développement +yarn dev + +# Production +yarn build +yarn start +``` + +## Contribution + +Nous encourageons toute contribution visant à améliorer la plateforme. Pour contribuer : + +1. Fork le projet +2. Créer une branche (`git checkout -b feature/AmazingFeature`) +3. Commit les changements (`git commit -m 'feat: Add some AmazingFeature'`) +4. Push vers la branche (`git push origin feature/AmazingFeature`) +5. Ouvrir une Pull Request + +### Conventions +- XO pour le linting +- Commits conventionnels (feat:, fix:, etc.) + +## Sécurité + +- Authentification via NextAuth.js +- Protection des routes sensibles +- Validation des entrées utilisateur +- Gestion des autorisations par Directus + +## License + +Ce projet est sous licence AGPL-3. Cette licence garantit que le code reste libre et que toute modification doit être partagée avec la communauté. Voir le fichier `LICENSE` pour plus de détails. + +## Contact + +Pour toute question ou suggestion concernant le projet, n'hésitez pas à ouvrir une issue sur Codeberg.