Initial commit: GBCM Server Quarkus implementation with JPA entities and services
This commit is contained in:
220
README.md
Normal file
220
README.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# GBCM Server Implementation - Quarkus
|
||||
|
||||
Implémentation serveur de la plateforme GBCM (Global Business Consulting and Management) avec Quarkus.
|
||||
|
||||
## Description
|
||||
|
||||
Ce module contient l'implémentation complète des services backend GBCM, incluant l'authentification, la gestion des utilisateurs, les services de coaching et la facturation.
|
||||
|
||||
## Technologies
|
||||
|
||||
- **Quarkus 3.6.0** - Framework Java moderne
|
||||
- **Hibernate ORM with Panache** - ORM et accès aux données
|
||||
- **PostgreSQL** - Base de données principale
|
||||
- **JWT** - Authentification et autorisation
|
||||
- **RESTEasy Reactive** - Services REST
|
||||
- **Flyway** - Migration de base de données
|
||||
- **Mailer** - Envoi d'emails
|
||||
- **OpenAPI/Swagger** - Documentation API
|
||||
- **Maven** - Gestion des dépendances
|
||||
|
||||
## Prérequis
|
||||
|
||||
- Java 17 ou supérieur
|
||||
- Maven 3.8+
|
||||
- PostgreSQL 13+
|
||||
- SMTP Server (pour les emails)
|
||||
|
||||
## Installation
|
||||
|
||||
1. Cloner le repository
|
||||
```bash
|
||||
git clone https://git.lions.dev/gbcm/gbcm-server-impl-quarkus.git
|
||||
cd gbcm-server-impl-quarkus
|
||||
```
|
||||
|
||||
2. Installer les dépendances
|
||||
```bash
|
||||
mvn clean install
|
||||
```
|
||||
|
||||
3. Configuration de la base de données
|
||||
```sql
|
||||
CREATE DATABASE gbcm_server;
|
||||
CREATE USER gbcm_server WITH PASSWORD 'gbcm_server_password';
|
||||
GRANT ALL PRIVILEGES ON DATABASE gbcm_server TO gbcm_server;
|
||||
```
|
||||
|
||||
4. Configuration
|
||||
Copier `application.properties.example` vers `application.properties` et configurer :
|
||||
- Base de données PostgreSQL
|
||||
- Configuration SMTP
|
||||
- Clés JWT
|
||||
- Paramètres métier
|
||||
|
||||
## Développement
|
||||
|
||||
### Démarrage en mode développement
|
||||
```bash
|
||||
mvn quarkus:dev
|
||||
```
|
||||
|
||||
L'application sera accessible sur :
|
||||
- API: http://localhost:8081/api/v1
|
||||
- Swagger UI: http://localhost:8081/swagger
|
||||
- Health Check: http://localhost:8081/health
|
||||
|
||||
### Base de données H2 (développement)
|
||||
En mode dev, une base H2 en mémoire est utilisée automatiquement.
|
||||
|
||||
## Structure du projet
|
||||
|
||||
```
|
||||
src/
|
||||
├── main/
|
||||
│ ├── java/com/gbcm/server/
|
||||
│ │ ├── entities/ # Entités JPA
|
||||
│ │ ├── repositories/ # Repositories Panache
|
||||
│ │ ├── services/ # Services métier
|
||||
│ │ │ ├── impl/ # Implémentations
|
||||
│ │ │ └── security/ # Services sécurité
|
||||
│ │ ├── resources/ # Endpoints REST
|
||||
│ │ ├── config/ # Configuration
|
||||
│ │ └── utils/ # Utilitaires
|
||||
│ └── resources/
|
||||
│ ├── application.properties
|
||||
│ ├── import.sql # Données de test
|
||||
│ └── db/migration/ # Scripts Flyway
|
||||
└── test/ # Tests
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Authentification
|
||||
- `POST /api/v1/auth/login` - Connexion
|
||||
- `POST /api/v1/auth/logout` - Déconnexion
|
||||
- `POST /api/v1/auth/refresh` - Rafraîchissement token
|
||||
- `GET /api/v1/auth/validate` - Validation token
|
||||
|
||||
### Utilisateurs
|
||||
- `GET /api/v1/users` - Liste des utilisateurs
|
||||
- `GET /api/v1/users/{id}` - Utilisateur par ID
|
||||
- `POST /api/v1/users` - Création utilisateur
|
||||
- `PUT /api/v1/users/{id}` - Mise à jour utilisateur
|
||||
|
||||
### Coaching
|
||||
- `GET /api/v1/coaching/sessions` - Sessions de coaching
|
||||
- `POST /api/v1/coaching/sessions` - Nouvelle session
|
||||
- `PUT /api/v1/coaching/sessions/{id}` - Mise à jour session
|
||||
|
||||
### Ateliers
|
||||
- `GET /api/v1/workshops` - Liste des ateliers
|
||||
- `POST /api/v1/workshops` - Nouvel atelier
|
||||
- `POST /api/v1/workshops/{id}/register` - Inscription
|
||||
|
||||
## Base de données
|
||||
|
||||
### Migrations Flyway
|
||||
Les scripts de migration sont dans `src/main/resources/db/migration/` :
|
||||
- `V1__create_users.sql` - Table utilisateurs
|
||||
- `V2__create_clients.sql` - Table clients
|
||||
- `V3__create_workshops.sql` - Tables ateliers
|
||||
|
||||
### Entités principales
|
||||
- `User` - Utilisateurs système
|
||||
- `Client` - Clients GBCM
|
||||
- `Coach` - Coachs/consultants
|
||||
- `Workshop` - Ateliers Strategic
|
||||
- `CoachingSession` - Sessions de coaching
|
||||
- `Invoice` - Factures
|
||||
|
||||
## Sécurité
|
||||
|
||||
### JWT
|
||||
- Tokens signés avec clé privée RSA
|
||||
- Durée de vie configurable
|
||||
- Refresh tokens pour sessions longues
|
||||
- Blacklist des tokens révoqués
|
||||
|
||||
### Rôles et permissions
|
||||
- `ADMIN` - Accès complet
|
||||
- `COACH` - Gestion clients et sessions
|
||||
- `CLIENT` - Accès services souscrits
|
||||
- `MANAGER` - Gestion opérationnelle
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
# Tests unitaires
|
||||
mvn test
|
||||
|
||||
# Tests d'intégration
|
||||
mvn verify
|
||||
|
||||
# Tests avec Testcontainers
|
||||
mvn test -Dtest.containers=true
|
||||
```
|
||||
|
||||
## Build et déploiement
|
||||
|
||||
### Build JVM
|
||||
```bash
|
||||
mvn clean package
|
||||
java -jar target/quarkus-app/quarkus-run.jar
|
||||
```
|
||||
|
||||
### Build natif
|
||||
```bash
|
||||
mvn clean package -Pnative
|
||||
./target/gbcm-server-impl-quarkus-1.0.0-SNAPSHOT-runner
|
||||
```
|
||||
|
||||
### Docker
|
||||
```bash
|
||||
# Build image
|
||||
docker build -t gbcm-server .
|
||||
|
||||
# Run container
|
||||
docker run -p 8081:8081 \
|
||||
-e DATABASE_URL=jdbc:postgresql://host:5432/gbcm \
|
||||
-e DB_USERNAME=gbcm_server \
|
||||
-e DB_PASSWORD=password \
|
||||
gbcm-server
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Variables d'environnement principales
|
||||
- `DATABASE_URL` - URL base de données
|
||||
- `DB_USERNAME` - Utilisateur DB
|
||||
- `DB_PASSWORD` - Mot de passe DB
|
||||
- `SMTP_USERNAME` - Utilisateur SMTP
|
||||
- `SMTP_PASSWORD` - Mot de passe SMTP
|
||||
- `JWT_PRIVATE_KEY` - Clé privée JWT
|
||||
|
||||
### Configuration métier
|
||||
- `gbcm.business.workshop.max-participants` - Participants max par atelier
|
||||
- `gbcm.business.coaching.session-duration` - Durée session coaching
|
||||
- `gbcm.business.billing.currency` - Devise facturation
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Health Checks
|
||||
- `/health` - Statut général
|
||||
- `/health/ready` - Prêt à recevoir du trafic
|
||||
- `/health/live` - Application vivante
|
||||
|
||||
### Métriques
|
||||
- `/metrics` - Métriques Prometheus
|
||||
- Métriques métier personnalisées
|
||||
- Monitoring des performances
|
||||
|
||||
## Support
|
||||
|
||||
- Email: support@gbcm.com
|
||||
- Documentation: https://docs.gbcm.com
|
||||
- API Docs: https://api.gbcm.com/swagger
|
||||
|
||||
## Licence
|
||||
|
||||
Propriétaire - GBCM LLC © 2024
|
||||
Reference in New Issue
Block a user