Files
api.konstitisyon.nu/README.md
T

170 lines
4.3 KiB
Markdown

# 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.