# 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