- Ajout de lib/rate-limit.js : fabrique de limiter en mémoire (closure + Map avec nettoyage lazy), sans dépendance externe, réutilisable - Ajout de middleware.js : intercepte /api/auth/register (5 req/15min) et /api/auth/callback/credentials (10 req/5min), répond 429 + Retry-After - Ajout de tasks/todo.md et tasks/lessons.md (suivi CLAUDE.md) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
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 titrecontenu: Texte du titrestatus: État du titre (brouillon, publié)
-
Articles : Contenus détaillés sous chaque titre
numero: Numéro de l'articlecontenu: Texte de l'articletitre: Référence au titre parentstatus: État de l'article
Système participatif
-
Commentaires : Discussions sur les titres
contenu: Texte du commentairetitre: Titre concernéuser_created: Auteur du commentaire
-
Votes : Système d'évaluation des versions
content_version_id: Version concernéevote: Valeur du vote (+1 ou -1)user_created: Identifiant du votantdate_created: Date du vote
Installation et développement
Prérequis
- Node.js 16+
- Yarn
- Instance Directus
Configuration
DIRECTUS_API_URL= # URL de l'API Directus
NEXTAUTH_URL= # URL de base de l'application
NEXTAUTH_SECRET= # Secret pour NextAuth
Installation
# 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 :
- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'feat: Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - 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.