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.
│ ├── 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.