docs: création du README avec la documentation complète de l'API
This commit is contained in:
@@ -1 +1,169 @@
|
|||||||
# api.konstitisyon.la
|
# 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user