Ce projet est un microservice en Go permettant la gestion des entreprises (companies) et des utilisateurs (users).
Il utilise PostgreSQL comme base de données, RabbitMQ pour la communication asynchrone entre microservices, et tourne entièrement via Docker Compose.
- Gestion des entreprises (
companies) - Gestion des utilisateurs (
users) - Publication d’événements RabbitMQ (
CompanyCreated,UserCreated) - Architecture micro-service modulaire et extensible
- Persistance via PostgreSQL
├── cmd/
│ └── main.go # Point d’entrée de l’application
├── config/
│ └── config.go # Chargement de la configuration & env
├── internal/
│ ├── customer/
│ │ ├── company/ # Logique métier "Company"
│ │ └── user/ # Logique métier "User"
│ └── event/ # Publication RabbitMQ
├── docker-compose.yml # Stack complète (Go + Postgres + RabbitMQ)
├── Dockerfile # Build du microservice Go
├── go.mod / go.sum # Dépendances Go
└── .env.example # Variables d’environnement- Docker
- Docker Compose
- (Optionnel) psql pour se connecter à la DB
Crée un fichier .env à la racine du projet et remplir les variables :
cp .env.example .envDepuis la racine du projet :
docker compose up --build📋 API (via Postman, curl, etc.)
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /companies |
Créer une entreprise |
| GET | /companies/:id |
Récupérer une entreprise |
| POST | /users |
Créer un utilisateur lié à une entreprise |
| GET | /users/:id |
Récupérer un utilisateur |
Depuis ton terminal :
psql -h localhost -p 5433 -U user -d customersPuis :
\dt -- Liste des tables
SELECT * FROM companies;
SELECT * FROM users;Pour arrêter et supprimer les containers :
docker compose downPour tout supprimer (containers + volumes + images) :
docker compose down -v --rmi all- Le projet est extensible : tu peux ajouter d’autres microservices qui consomment les événements RabbitMQ.
- Le code est organisé selon une structure modulaire, facilitant la maintenance et les tests unitaires.