# api.konstitisyon.la Backend Directus pour konstitisyon.la, une plateforme de rédaction constitutionnelle collaborative. Ce dépôt contient la configuration Directus et le schéma de la base de données. ## Architecture ### Technologies - **Backend**: Directus 11.x - **Base de données**: SQLite - **Authentification**: JWT via Directus ### Structure du projet ``` api.konstitisyon.la/ ├── extensions/ # Extensions Directus personnalisées ├── uploads/ # Fichiers uploadés ├── data.db # Base de données SQLite └── .env # Configuration de l'environnement ``` ## 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 ``` ### Collections Directus #### Collections principales - **Titres** - Sections principales de la constitution - Numérotés et versionnés - Champs : numero, contenu, status - **Articles** - Contenus détaillés sous chaque titre - Liés à un titre parent - Champs : numero, contenu, titre (FK), status #### Collections participatives - **Commentaires** - Discussions sur les titres - Liés à un titre spécifique - Champs : contenu, titre (FK), user_created - **Votes** - Évaluation des versions de contenu - Valeurs : +1 ou -1 - Champs : content_version_id (FK), vote, user_created ## Installation ### Prérequis - Node.js 16+ - npm ou yarn - SQLite 3 ### Configuration Copier le fichier `.env.sample` vers un fichier `.env` : ```bash cp .env.sample .env ``` ### Démarrage ```bash # Installation des dépendances npm install # Démarrage du serveur npx directus start ``` ## API ### Points d'entrée principaux #### Titres - `GET /items/titres` : Liste des titres - `GET /items/titres/:id` : Détails d'un titre - `POST /items/titres` : Créer un titre - `PATCH /items/titres/:id` : Modifier un titre #### Articles - `GET /items/articles` : Liste des articles - `GET /items/articles/:id` : Détails d'un article - `POST /items/articles` : Créer un article - `PATCH /items/articles/:id` : Modifier un article #### Commentaires - `GET /items/commentaires` : Liste des commentaires - `GET /items/commentaires/:id` : Détails d'un commentaire - `POST /items/commentaires` : Créer un commentaire #### Votes - `GET /items/votes` : Liste des votes - `GET /items/votes/:id` : Détails d'un vote - `POST /items/votes` : Créer un vote - `PATCH /items/votes/:id` : Modifier un vote ### Authentification - `POST /auth/login` : Connexion utilisateur - `POST /auth/refresh` : Rafraîchissement du token - `POST /auth/logout` : Déconnexion ### Base de données Le projet utilise une base de données SQLite. Un fichier `data.sample.db` est fourni avec : - La structure complète de la base de données - Un compte administrateur par défaut : - Email : admin@example.com - Mot de passe : admin Pour démarrer un nouveau projet : 1. Copier `data.sample.db` vers `data.db` - `cp data.sample.db data.db` 2. Mettre à jour le fichier `.env` pour pointer vers `data.db` 3. Démarrer le serveur ## 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.