docs: add new documentation section and update license details
Introduced a "Documentation" section in the README with links to various detailed implementation plans (e.g., backend architecture and OAuth integration). Updated the license from MIT to AGPLv3 to align with project compliance.
This commit is contained in:
parent
ef934a8599
commit
32f82e46f8
347
BUSINESS_FLOW_DIAGRAMS.md
Normal file
347
BUSINESS_FLOW_DIAGRAMS.md
Normal file
@ -0,0 +1,347 @@
|
||||
# Diagrammes de Flux Métier
|
||||
|
||||
Ce document présente les diagrammes de séquence pour les principaux flux métier de l'application de création de groupes.
|
||||
|
||||
## Table des Matières
|
||||
|
||||
1. [Flux d'Authentification](#1-flux-dauthentification)
|
||||
2. [Flux de Création et Gestion de Projet](#2-flux-de-création-et-gestion-de-projet)
|
||||
3. [Flux de Gestion des Personnes](#3-flux-de-gestion-des-personnes)
|
||||
4. [Flux de Création de Groupe](#4-flux-de-création-de-groupe)
|
||||
- [4.1 Création Manuelle](#41-création-manuelle)
|
||||
- [4.2 Création Automatique](#42-création-automatique)
|
||||
5. [Flux de Collaboration en Temps Réel](#5-flux-de-collaboration-en-temps-réel)
|
||||
|
||||
## 1. Flux d'Authentification
|
||||
|
||||
Le flux d'authentification utilise OAuth 2.0 avec GitHub comme fournisseur d'identité.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as Utilisateur
|
||||
participant Frontend as Frontend (Next.js)
|
||||
participant Backend as Backend (NestJS)
|
||||
participant GitHub as GitHub OAuth
|
||||
|
||||
User->>Frontend: Clic sur "Se connecter avec GitHub"
|
||||
Frontend->>Backend: Redirection vers /auth/github
|
||||
Backend->>GitHub: Redirection vers GitHub OAuth
|
||||
GitHub->>User: Demande d'autorisation
|
||||
User->>GitHub: Accepte l'autorisation
|
||||
GitHub->>Backend: Redirection avec code d'autorisation
|
||||
Backend->>GitHub: Échange code contre token d'accès
|
||||
GitHub->>Backend: Retourne token d'accès
|
||||
Backend->>GitHub: Requête informations utilisateur
|
||||
GitHub->>Backend: Retourne informations utilisateur
|
||||
Backend->>Backend: Crée/Met à jour l'utilisateur en BDD
|
||||
Backend->>Backend: Génère JWT (access + refresh tokens)
|
||||
Backend->>Frontend: Redirection avec tokens JWT
|
||||
Frontend->>Frontend: Stocke les tokens
|
||||
Frontend->>User: Affiche interface authentifiée
|
||||
```
|
||||
|
||||
## 2. Flux de Création et Gestion de Projet
|
||||
|
||||
Ce flux illustre le processus de création et de gestion d'un projet par un utilisateur.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as Utilisateur
|
||||
participant Frontend as Frontend (Next.js)
|
||||
participant API as API (NestJS)
|
||||
participant DB as Base de données
|
||||
|
||||
User->>Frontend: Accède au dashboard
|
||||
Frontend->>API: GET /api/projects
|
||||
API->>DB: Requête les projets de l'utilisateur
|
||||
DB->>API: Retourne les projets
|
||||
API->>Frontend: Retourne la liste des projets
|
||||
Frontend->>User: Affiche les projets existants
|
||||
|
||||
User->>Frontend: Clic sur "Créer un nouveau projet"
|
||||
Frontend->>User: Affiche le formulaire de création
|
||||
User->>Frontend: Remplit le formulaire (nom, description)
|
||||
Frontend->>API: POST /api/projects
|
||||
API->>DB: Insère le nouveau projet
|
||||
DB->>API: Confirme la création
|
||||
API->>Frontend: Retourne les détails du projet créé
|
||||
Frontend->>User: Affiche la page du projet
|
||||
|
||||
User->>Frontend: Modifie les détails du projet
|
||||
Frontend->>API: PATCH /api/projects/{id}
|
||||
API->>DB: Met à jour le projet
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend: Retourne les détails mis à jour
|
||||
Frontend->>User: Affiche les détails mis à jour
|
||||
|
||||
User->>Frontend: Clic sur "Supprimer le projet"
|
||||
Frontend->>User: Demande confirmation
|
||||
User->>Frontend: Confirme la suppression
|
||||
Frontend->>API: DELETE /api/projects/{id}
|
||||
API->>DB: Supprime le projet et ses données associées
|
||||
DB->>API: Confirme la suppression
|
||||
API->>Frontend: Retourne confirmation
|
||||
Frontend->>User: Redirige vers le dashboard
|
||||
```
|
||||
|
||||
## 3. Flux de Gestion des Personnes
|
||||
|
||||
Ce flux illustre le processus d'ajout et de gestion des personnes dans un projet.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as Utilisateur
|
||||
participant Frontend as Frontend (Next.js)
|
||||
participant API as API (NestJS)
|
||||
participant DB as Base de données
|
||||
participant WS as WebSocket
|
||||
|
||||
User->>Frontend: Accède à un projet
|
||||
Frontend->>API: GET /api/projects/{id}
|
||||
API->>DB: Requête les détails du projet
|
||||
DB->>API: Retourne les détails du projet
|
||||
API->>Frontend: Retourne les détails du projet
|
||||
Frontend->>User: Affiche la page du projet
|
||||
|
||||
User->>Frontend: Clic sur "Gérer les personnes"
|
||||
Frontend->>API: GET /api/projects/{id}/persons
|
||||
API->>DB: Requête les personnes du projet
|
||||
DB->>API: Retourne les personnes
|
||||
API->>Frontend: Retourne la liste des personnes
|
||||
Frontend->>User: Affiche la liste des personnes
|
||||
|
||||
User->>Frontend: Clic sur "Ajouter une personne"
|
||||
Frontend->>User: Affiche le formulaire d'ajout
|
||||
User->>Frontend: Remplit les attributs (prénom, nom, genre, niveau technique, etc.)
|
||||
Frontend->>API: POST /api/projects/{id}/persons
|
||||
API->>DB: Insère la nouvelle personne
|
||||
DB->>API: Confirme l'ajout
|
||||
API->>Frontend: Retourne les détails de la personne
|
||||
API->>WS: Émet événement "personAdded"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Met à jour la liste des personnes
|
||||
|
||||
User->>Frontend: Modifie les attributs d'une personne
|
||||
Frontend->>API: PATCH /api/persons/{id}
|
||||
API->>DB: Met à jour la personne
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend: Retourne les détails mis à jour
|
||||
API->>WS: Émet événement "personUpdated"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche les détails mis à jour
|
||||
|
||||
User->>Frontend: Clic sur "Supprimer une personne"
|
||||
Frontend->>User: Demande confirmation
|
||||
User->>Frontend: Confirme la suppression
|
||||
Frontend->>API: DELETE /api/persons/{id}
|
||||
API->>DB: Supprime la personne
|
||||
DB->>API: Confirme la suppression
|
||||
API->>Frontend: Retourne confirmation
|
||||
API->>WS: Émet événement "personDeleted"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Met à jour la liste des personnes
|
||||
|
||||
User->>Frontend: Ajoute un tag à une personne
|
||||
Frontend->>API: POST /api/persons/{id}/tags
|
||||
API->>DB: Associe le tag à la personne
|
||||
DB->>API: Confirme l'association
|
||||
API->>Frontend: Retourne la personne mise à jour
|
||||
API->>WS: Émet événement "personTagged"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche la personne avec le tag
|
||||
```
|
||||
|
||||
## 4. Flux de Création de Groupe
|
||||
|
||||
### 4.1 Création Manuelle
|
||||
|
||||
Ce flux illustre le processus de création manuelle de groupes.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as Utilisateur
|
||||
participant Frontend as Frontend (Next.js)
|
||||
participant API as API (NestJS)
|
||||
participant DB as Base de données
|
||||
participant WS as WebSocket
|
||||
|
||||
User->>Frontend: Accède à un projet
|
||||
Frontend->>API: GET /api/projects/{id}
|
||||
API->>DB: Requête les détails du projet
|
||||
DB->>API: Retourne les détails du projet
|
||||
API->>Frontend: Retourne les détails du projet
|
||||
Frontend->>User: Affiche la page du projet
|
||||
|
||||
User->>Frontend: Clic sur "Créer des groupes"
|
||||
Frontend->>API: GET /api/projects/{id}/persons
|
||||
API->>DB: Requête les personnes du projet
|
||||
DB->>API: Retourne les personnes
|
||||
API->>Frontend: Retourne la liste des personnes
|
||||
Frontend->>User: Affiche l'interface de création de groupes
|
||||
|
||||
User->>Frontend: Clic sur "Création manuelle"
|
||||
Frontend->>User: Affiche l'interface de glisser-déposer
|
||||
User->>Frontend: Crée un nouveau groupe
|
||||
Frontend->>API: POST /api/projects/{id}/groups
|
||||
API->>DB: Insère le nouveau groupe
|
||||
DB->>API: Confirme la création
|
||||
API->>Frontend: Retourne les détails du groupe
|
||||
API->>WS: Émet événement "groupCreated"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche le groupe créé
|
||||
|
||||
User->>Frontend: Glisse-dépose des personnes dans le groupe
|
||||
Frontend->>API: POST /api/groups/{id}/persons
|
||||
API->>DB: Associe les personnes au groupe
|
||||
DB->>API: Confirme l'association
|
||||
API->>Frontend: Retourne le groupe mis à jour
|
||||
API->>WS: Émet événement "personMoved"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche le groupe avec les personnes
|
||||
|
||||
User->>Frontend: Renomme le groupe
|
||||
Frontend->>API: PATCH /api/groups/{id}
|
||||
API->>DB: Met à jour le nom du groupe
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend: Retourne les détails mis à jour
|
||||
API->>WS: Émet événement "groupUpdated"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche le groupe renommé
|
||||
|
||||
User->>Frontend: Clic sur "Enregistrer les groupes"
|
||||
Frontend->>API: PUT /api/projects/{id}/groups/save
|
||||
API->>DB: Enregistre l'état final des groupes
|
||||
DB->>API: Confirme l'enregistrement
|
||||
API->>Frontend: Retourne confirmation
|
||||
Frontend->>User: Affiche message de confirmation
|
||||
```
|
||||
|
||||
### 4.2 Création Automatique
|
||||
|
||||
Ce flux illustre le processus de création automatique de groupes équilibrés.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as Utilisateur
|
||||
participant Frontend as Frontend (Next.js)
|
||||
participant API as API (NestJS)
|
||||
participant DB as Base de données
|
||||
participant Algorithm as Algorithme de Groupes
|
||||
participant WS as WebSocket
|
||||
|
||||
User->>Frontend: Accède à un projet
|
||||
Frontend->>API: GET /api/projects/{id}
|
||||
API->>DB: Requête les détails du projet
|
||||
DB->>API: Retourne les détails du projet
|
||||
API->>Frontend: Retourne les détails du projet
|
||||
Frontend->>User: Affiche la page du projet
|
||||
|
||||
User->>Frontend: Clic sur "Créer des groupes"
|
||||
Frontend->>API: GET /api/projects/{id}/persons
|
||||
API->>DB: Requête les personnes du projet
|
||||
DB->>API: Retourne les personnes
|
||||
API->>Frontend: Retourne la liste des personnes
|
||||
Frontend->>User: Affiche l'interface de création de groupes
|
||||
|
||||
User->>Frontend: Clic sur "Création automatique"
|
||||
Frontend->>User: Affiche les options de génération
|
||||
User->>Frontend: Définit le nombre de groupes souhaités
|
||||
User->>Frontend: Sélectionne un preset (équilibré par niveau, etc.)
|
||||
Frontend->>API: POST /api/projects/{id}/groups/generate
|
||||
API->>Algorithm: Transmet les personnes et les paramètres
|
||||
Algorithm->>Algorithm: Exécute l'algorithme de répartition
|
||||
Algorithm->>API: Retourne les groupes générés
|
||||
API->>DB: Insère les groupes générés
|
||||
DB->>API: Confirme la création
|
||||
API->>Frontend: Retourne les groupes générés
|
||||
API->>WS: Émet événement "groupsGenerated"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche les groupes générés
|
||||
|
||||
User->>Frontend: Ajuste manuellement certains groupes
|
||||
Frontend->>API: PATCH /api/groups/{id}/persons
|
||||
API->>DB: Met à jour les associations
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend: Retourne les groupes mis à jour
|
||||
API->>WS: Émet événement "groupsUpdated"
|
||||
WS->>Frontend: Notifie les clients connectés
|
||||
Frontend->>User: Affiche les groupes ajustés
|
||||
|
||||
User->>Frontend: Clic sur "Enregistrer les groupes"
|
||||
Frontend->>API: PUT /api/projects/{id}/groups/save
|
||||
API->>DB: Enregistre l'état final des groupes
|
||||
DB->>API: Confirme l'enregistrement
|
||||
API->>Frontend: Retourne confirmation
|
||||
Frontend->>User: Affiche message de confirmation
|
||||
```
|
||||
|
||||
## 5. Flux de Collaboration en Temps Réel
|
||||
|
||||
Ce flux illustre le processus de collaboration en temps réel entre plusieurs utilisateurs travaillant sur le même projet.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User1 as Utilisateur 1
|
||||
participant Frontend1 as Frontend 1
|
||||
participant User2 as Utilisateur 2
|
||||
participant Frontend2 as Frontend 2
|
||||
participant API as API (NestJS)
|
||||
participant WS as WebSocket Gateway
|
||||
participant DB as Base de données
|
||||
|
||||
User1->>Frontend1: Se connecte au projet
|
||||
Frontend1->>API: GET /api/projects/{id}
|
||||
API->>DB: Requête les détails du projet
|
||||
DB->>API: Retourne les détails du projet
|
||||
API->>Frontend1: Retourne les détails du projet
|
||||
Frontend1->>User1: Affiche la page du projet
|
||||
|
||||
Frontend1->>WS: Connexion WebSocket
|
||||
Frontend1->>WS: Rejoint la salle "project:{id}"
|
||||
WS->>Frontend1: Confirme la connexion
|
||||
|
||||
User2->>Frontend2: Se connecte au même projet
|
||||
Frontend2->>API: GET /api/projects/{id}
|
||||
API->>DB: Requête les détails du projet
|
||||
DB->>API: Retourne les détails du projet
|
||||
API->>Frontend2: Retourne les détails du projet
|
||||
Frontend2->>User2: Affiche la page du projet
|
||||
|
||||
Frontend2->>WS: Connexion WebSocket
|
||||
Frontend2->>WS: Rejoint la salle "project:{id}"
|
||||
WS->>Frontend2: Confirme la connexion
|
||||
WS->>Frontend1: Notifie qu'un autre utilisateur a rejoint
|
||||
Frontend1->>User1: Affiche notification "Utilisateur 2 a rejoint"
|
||||
|
||||
User1->>Frontend1: Crée un nouveau groupe
|
||||
Frontend1->>API: POST /api/projects/{id}/groups
|
||||
API->>DB: Insère le nouveau groupe
|
||||
DB->>API: Confirme la création
|
||||
API->>Frontend1: Retourne les détails du groupe
|
||||
API->>WS: Émet événement "groupCreated"
|
||||
WS->>Frontend2: Transmet l'événement "groupCreated"
|
||||
Frontend2->>User2: Met à jour l'interface avec le nouveau groupe
|
||||
|
||||
User2->>Frontend2: Déplace une personne dans le groupe
|
||||
Frontend2->>API: PATCH /api/groups/{id}/persons
|
||||
API->>DB: Met à jour les associations
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend2: Retourne le groupe mis à jour
|
||||
API->>WS: Émet événement "personMoved"
|
||||
WS->>Frontend1: Transmet l'événement "personMoved"
|
||||
Frontend1->>User1: Met à jour l'interface avec le mouvement
|
||||
|
||||
User1->>Frontend1: Renomme le groupe
|
||||
Frontend1->>API: PATCH /api/groups/{id}
|
||||
API->>DB: Met à jour le nom du groupe
|
||||
DB->>API: Confirme la mise à jour
|
||||
API->>Frontend1: Retourne les détails mis à jour
|
||||
API->>WS: Émet événement "groupUpdated"
|
||||
WS->>Frontend2: Transmet l'événement "groupUpdated"
|
||||
Frontend2->>User2: Met à jour l'interface avec le nouveau nom
|
||||
|
||||
User2->>Frontend2: Se déconnecte du projet
|
||||
Frontend2->>WS: Quitte la salle "project:{id}"
|
||||
WS->>Frontend1: Notifie qu'un utilisateur a quitté
|
||||
Frontend1->>User1: Affiche notification "Utilisateur 2 a quitté"
|
||||
```
|
19
README.md
19
README.md
@ -12,6 +12,7 @@ Une application web moderne dédiée à la création et à la gestion de groupes
|
||||
- [Installation et Démarrage](#installation-et-démarrage)
|
||||
- [Sécurité et Conformité](#sécurité-et-conformité)
|
||||
- [Performance](#performance)
|
||||
- [Documentation](#documentation)
|
||||
- [Contribution](#contribution)
|
||||
- [Licence](#licence)
|
||||
|
||||
@ -120,7 +121,7 @@ flowchart TB
|
||||
|
||||
### Déploiement
|
||||
- **Docker**: Conteneurisation pour assurer la cohérence entre les environnements
|
||||
- **GitHub Actions**: CI/CD pour l'intégration et le déploiement continus
|
||||
- **Gitea Actions**: CI/CD pour l'intégration et le déploiement continus
|
||||
|
||||
## 📊 Modèle de Données
|
||||
|
||||
@ -224,10 +225,22 @@ pnpm --filter <package-name> add -D <dependency>
|
||||
- Optimisation des requêtes N+1
|
||||
- Monitoring et alerting automatique
|
||||
|
||||
## 📚 Documentation
|
||||
|
||||
Pour plus de détails sur l'implémentation et l'architecture de l'application, consultez les documents suivants :
|
||||
|
||||
- [Diagrammes de Flux Métier](BUSINESS_FLOW_DIAGRAMS.md) - Diagrammes de séquence pour les principaux flux métier de l'application
|
||||
- [Plan d'Implémentation du Backend](BACKEND_IMPLEMENTATION_PLAN.md) - Plan détaillé pour l'implémentation du backend
|
||||
- [Plan du Schéma de Base de Données](DATABASE_SCHEMA_PLAN.md) - Définition du schéma de base de données avec DrizzleORM
|
||||
- [Plan d'Implémentation de l'Authentification](AUTH_IMPLEMENTATION_PLAN.md) - Détails sur l'implémentation de l'authentification OAuth avec GitHub
|
||||
- [Plan d'Implémentation des WebSockets](WEBSOCKET_IMPLEMENTATION_PLAN.md) - Plan pour la communication en temps réel
|
||||
- [Guide d'Implémentation](IMPLEMENTATION_GUIDE.md) - Guide complet pour l'implémentation du backend
|
||||
- [Résumé et Prochaines Étapes](SUMMARY.md) - Résumé du travail effectué et prochaines étapes
|
||||
|
||||
## 👥 Contribution
|
||||
|
||||
Les contributions sont les bienvenues ! Veuillez consulter notre guide de contribution pour plus d'informations.
|
||||
Ce projet n'est pas ouvert aux contributions externes.
|
||||
|
||||
## 📄 Licence
|
||||
|
||||
Ce projet est sous licence [MIT](LICENSE).
|
||||
Ce projet est sous licence [GNU Affero General Public License v3.0 (AGPL-3.0)](LICENSE).
|
||||
|
11
package.json
Normal file
11
package.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "brief-20",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "AGPL"
|
||||
}
|
8889
pnpm-lock.yaml
generated
Normal file
8889
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
pnpm-workspace.yaml
Normal file
3
pnpm-workspace.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
packages:
|
||||
- frontend
|
||||
- backend
|
Loading…
x
Reference in New Issue
Block a user