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