docs: améliore la documentation avec le schéma de la base de données
- Ajoute un diagramme ERD en Mermaid montrant la structure de la BDD - Généralise la description du projet (non spécifique à Haïti) - Réorganise la section modèle de données - Clarifie les relations entre les entités
This commit is contained in:
@@ -1 +1,179 @@
|
|||||||
# konstitisyon.la
|
# 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user