# 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.