[FR] CollabSpace est une mini-plateforme de collaboration simplifiée (type Trello/Slack) conçue pour maîtriser une architecture basée sur les microservices avec Spring Boot, Kafka, Eureka, API Gateway et un Frontend Angular.
[EN] CollabSpace is a lightweight Trello/Slack-like learning project built with Spring Boot microservices, Kafka events, Eureka Discovery, JWT-secured API Gateway, and an Angular frontend.
CollabSpace sert de projet d'apprentissage pratique pour l'architecture microservices.
Fonctionnalités Principales :
- Utilisateurs & Sécurité : Enregistrement, connexion, et sécurisation via JWT.
- Gestion de Contenu : Création de Projets et de Tâches.
- Communication : Messagerie (Chat) intégrée dans les projets.
- Événements Asynchrones : Notifications en temps réel des nouveaux messages via Kafka.
Le projet utilise une architecture microservices décentralisée et l'écosystème Spring Cloud.
- API Gateway (8080) : Point d'entrée unique, filtre JWT et routing.
- User Service (8081) : CRUD Utilisateurs, Authentification/JWT.
- Project Service (8082) : CRUD Projets, Feign vers User Service.
- Task Service (8083) : CRUD Tâches, Feign vers Project Service.
- Message Service (8084) : Chat, Kafka Producer.
- Notification Service (8085) : Kafka Consumer, logs des notifications.
- Eureka Server (8761) : Service Discovery.
- Config Server : Centralisation de la configuration.
- PostgreSQL : Base de données relationnelle.
- Kafka + Zookeeper : Broker de messagerie événementiel.
- Angular Frontend (4200) : Interface utilisateur.
-
Synchrone (Feign) : Project Service
$\rightarrow$ User Service ; Task Service$\rightarrow$ Project Service. -
Asynchrone (Kafka) : Message Service (Producer)
$\rightarrow$ Kafka Topic$\rightarrow$ Notification Service (Consumer). -
Externe : Angular Frontend
$\rightarrow$ API Gateway$\rightarrow$ Services.
| Composant | Rôle | Port |
|---|---|---|
| API Gateway | Point d'entrée | 8080 |
| User Service | Users & Auth | 8081 |
| Project Service | Projets | 8082 |
| Task Service | Tâches | 8083 |
| Message Service | Chat | 8084 |
| Notification Service | Notifications | 8085 |
| Eureka Server | Discovery | 8761 |
| Angular | Dev Frontend | 4200 |
Toutes les requêtes ci-dessous passent par l'API Gateway (http://localhost:8080/).
| Service | Méthode | Endpoint (Exemple) | Description | Protection JWT |
|---|---|---|---|---|
| User | POST |
/api/user/register |
Créer un nouvel utilisateur | Non |
| User | POST |
/api/user/login |
Obtenir le token JWT | Non |
| Project | POST |
/api/project/projects |
Créer un projet | Oui |
| Task | POST |
/api/task/tasks |
Créer une tâche | Oui |
| Message | POST |
/api/message/messages |
Poster un message (déclenche event Kafka) | Oui |
- JDK 17+
- Maven 3.6+
- Node.js et npm ou yarn
- Docker & Docker Compose
- PostgreSQL
- Kafka & Zookeeper
-
Démarrer l'infrastructure : Lancez PostgreSQL, Kafka et Zookeeper (localement ou via docker).
-
Démarrer les Services Spring Boot :
- Commencez par Eureka Server et Config Server.
- Ensuite, démarrez les services métier (User, Project, Task, Message, Notification).
- Terminez par l'API Gateway.
# Exemple pour un service cd <nom-du-service> mvn clean package -DskipTests java -jar target/*.jar --spring.profiles.active=dev
-
Vérification : Accédez à
http://localhost:8761pour confirmer l'enregistrement. -
Lancer le Frontend Angular :
cd frontend npm install ng serve --open
- Construction des Artifacts :
# Exécuter dans le répertoire racine du projet mvn clean package -DskipTests # Assurez-vous d'avoir les images Docker construites localement si nécessaire
- Lancer l'environnement :
docker-compose up --build
- Accès :
- Eureka (Discovery) :
http://localhost:8761 - API Gateway :
http://localhost:8080 - Frontend (si inclus dans compose) :
http://localhost:4200
- Eureka (Discovery) :