Files

180 lines
5.0 KiB
Markdown
Raw Permalink Normal View History

# konstitisyon.nu
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.nu 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.nu/
├── 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.