Smart Library est un projet vitrine backend démontrant une architecture microservices complète basée sur Spring Boot.
-
Architecture microservices
-
API Gateway centralisée
-
Service Discovery avec Netflix Eureka
-
Sécurité centralisée avec JWT
-
Gestion des rôles (USER / ADMIN)
-
Communication inter-services via OpenFeign
-
Pagination REST professionnelle (Pageable)
-
Base H2 embarquée
-
Initialisation automatique des données
-
Architecture prête pour Docker et CI/CD
1️⃣ API Gateway
Centralisation de la sécurité
Validation des JWT
Filtrage des requêtes
Routage vers les microservices
2️⃣ Auth Service
Authentification des utilisateurs
Génération de JWT
Gestion des rôles (USER / ADMIN)
3️⃣ Book Service
Gestion des livres
Pagination dynamique
Protection par rôles
4️⃣ Client Service
Gestion des clients
Appel distant vers Book Service via Feign
5️⃣ Service Discovery
Enregistrement automatique des services via Eureka
Authentification JWT
Validation du token au niveau API Gateway
Autorisation basée sur les rôles
Protection des routes sensibles (ADMIN uniquement)
GET /books?page=0&size=5
Authorization: Bearer
Le Book Service implémente une pagination professionnelle via Pageable.
GET /books?page=1&size=5&sort=title,asc
- Fonctionnement technique :
Utilisation de LIMIT et OFFSET au niveau SQL Réponse incluant métadonnées (totalElements, totalPages, etc.) Configuration d’une taille maximale sécurisée
- Java 17
- Maven
- IDE IntelliJ ou Eclipse
- Postman ou curl
1️⃣ Cloner le repository git clone https://github.com/Mustapha-ben-amara/smart-library-microservices.git cd smart-library-microservices 2️⃣ Lancer Eureka Server
cd discovery-service mvn spring-boot:run
Port par défaut : 8761 Console : http://localhost:8761
3️⃣ Lancer Book Service
cd book-service mvn spring-boot:run
Port par défaut : 8082 Health check : http://localhost:8082/actuator/health
4️⃣ Lancer Client Service cd client-service mvn spring-boot:run
Port par défaut : 8081
5️⃣ Lancer Auth Service cd auth-service mvn spring-boot:run
6️⃣ Lancer API Gateway
cd api-gateway
mvn spring-boot:run
POST /auth/login
Body :
{ "username": "admin", "password": "admin" }
Retour :
{ "token": "eyJhbGciOiJIUzI1NiJ9..." }
GET /books?page=0&size=5
Authorization: Bearer
-
Architecture microservices
-
Spring Security + JWT
-
API Gateway sécurisée
-
Communication inter-services
-
Pagination optimisée
-
Gestion des rôles
-
Structuration propre d’un projet distribué
-
Refresh Token
-
Docker Compose
-
Base PostgreSQL
-
Tests unitaires
-
Observabilité (logs centralisés)
-
Sécurité maîtrisée
-
Architecture distribuée
-
Code structuré
-
Bonnes pratiques REST