Skip to content

CollabSpace est une plateforme de collaboration pensée pour apprendre l’architecture microservices. Fonctions principales : users, projets, tâches, messages (chat), notifications via Kafka, discovery (Eureka) et API Gateway (JWT).

Notifications You must be signed in to change notification settings

Mouadbouanani/CollabSpace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

CollabSpace : Plateforme de Collaboration en Microservices

[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.


1. Aperçu du Projet

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.

2. Architecture et Composants Techniques

Le projet utilise une architecture microservices décentralisée et l'écosystème Spring Cloud.

Composants & Rôles

  • 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.

Flux de Communication

  • 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.

3. Ports par Défaut

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

4. Endpoints Essentiels (Via API Gateway)

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

5. Prérequis

  • JDK 17+
  • Maven 3.6+
  • Node.js et npm ou yarn
  • Docker & Docker Compose
  • PostgreSQL
  • Kafka & Zookeeper

6. Démarrage Rapide

Option A — Démarrage Local (Mode Développement)

  1. Démarrer l'infrastructure : Lancez PostgreSQL, Kafka et Zookeeper (localement ou via docker).

  2. 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
  3. Vérification : Accédez à http://localhost:8761 pour confirmer l'enregistrement.

  4. Lancer le Frontend Angular :

    cd frontend
    npm install
    ng serve --open

Option B — Démarrage Complet avec Docker Compose (Recommandé)

  1. 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
  2. Lancer l'environnement :
    docker-compose up --build
  3. Accès :
    • Eureka (Discovery) : http://localhost:8761
    • API Gateway : http://localhost:8080
    • Frontend (si inclus dans compose) : http://localhost:4200

About

CollabSpace est une plateforme de collaboration pensée pour apprendre l’architecture microservices. Fonctions principales : users, projets, tâches, messages (chat), notifications via Kafka, discovery (Eureka) et API Gateway (JWT).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published