"Une France Vigilante, des habitants en sécurité"
VigilanceFrance est une plateforme de signalement d'incidents civiques permettant aux citoyens de signaler et suivre divers types d'incidents sur une carte interactive. Le projet utilise une architecture microservices déployée sur Kubernetes.
- Rayane Achouchi
- Joao Gabriel Marques-Dinis
Le projet est composé de 5 microservices principaux :
- API Gateway : Point d'entrée unique pour toutes les requêtes
- Auth Service : Gestion de l'authentification (OAuth Google/GitHub)
- Maps Service : Gestion des incidents et données géographiques
- Messages Service : Gestion des messages et commentaires (WebSocket)
- Notifs Service : Gestion des notifications par email (Bull Queue)
Infrastructure :
- MongoDB 8.0.4 pour la persistance des données
- Redis 7.4.1 pour les sessions et le cache
- Kubernetes/Minikube pour l'orchestration
┌─────────────────────────────────────────────────────────────┐
│ API Gateway │
│ (Port: 3000) │
└──────────────┬──────────────┬───────────────┬───────────────┘
│ │ │
┌───────▼─────┐ ┌────▼────┐ ┌──────▼────────┐
│Auth Service │ │Maps │ │Messages │
│(Port: 3001) │ │Service │ │Service │
└──────┬──────┘ │(3002) │ │(3003) │
│ └────┬────┘ └──────┬────────┘
│ │ │
┌──────▼──────────────▼────────────────▼────────┐
│ MongoDB (27017) │
│ vigilance_france database │
└─────────────────────────────────────────────────┘
│
┌──────────────────▼────────────────────────────┐
│ Redis (6379) │
│ Sessions & Cache │
└────────────────────────────────────────────────┘
- Docker
- Minikube (8GB RAM minimum, 4 CPUs)
- kubectl
- Node.js 22
- npm/pnpm
minikube start --memory=8192 --cpus=4
eval $(minikube docker-env)# Auth Service
cd backend/microservices/auth-service
npm run build
# Maps Service
cd ../maps-service
npm run build
# Messages Service
cd ../messages-service
npm run build
# Notifs Service
cd ../notifs-service
npm run build# API Gateway
cd backend/api-gateway
docker build -t vigilance/api-gateway:latest .
# Microservices
cd ../microservices/auth-service
docker build -t vigilance/auth-service:latest .
cd ../maps-service
docker build -t vigilance/maps-service:latest .
cd ../messages-service
docker build -t vigilance/mess-service:latest .
cd ../notifs-service
docker build -t vigilance/notifs-service:latest .cd /home/saphirdev/VigilanceFrance
kubectl apply -f k8s/base/namespace.yaml
kubectl apply -f k8s/base/secrets.yaml
kubectl apply -f k8s/base/configmap.yaml
kubectl apply -f k8s/databases/
kubectl apply -f k8s/microservices/kubectl get pods -n vigilance-francekubectl logs -f <pod-name> -n vigilance-franceminikube service api-gateway-service -n vigilance-france --urlL'API Gateway sera accessible sur l'URL fournie (exemple: http://127.0.0.1:41007)
La configuration se fait via ConfigMaps et Secrets Kubernetes :
- ConfigMap (
k8s/base/configmap.yaml) : Variables d'environnement non sensibles - Secrets (
k8s/base/secrets.yaml) : Mots de passe et clés secrètes
Variables importantes :
MONGO_HOST,MONGO_PORT,MONGO_DB,MONGO_USER,MONGO_PASSWORDREDIS_HOST,REDIS_PORT,REDIS_PSWD- URLs des services pour l'API Gateway
Le frontend est conçu pour tourner localement (pas dans Kubernetes) :
cd client
yarn install
yarn dev- Se connecter via OAuth
- Cliquer sur la carte pour positionner l'incident
- Sélectionner le type d'incident
- Ajouter une description
- Soumettre
GET /health- Health checkPOST /register- InscriptionPOST /login- ConnexionGET /oauth/google- OAuth GoogleGET /oauth/github- OAuth GitHub
GET /health- Health checkGET /incidents- Liste des incidentsPOST /incidents- Créer un incidentGET /incidents/:id- Détails d'un incident
- WebSocket pour les messages en temps réel
POST /comments- Ajouter un commentaire
POST /notify- Envoyer une notification
# Liste des pods
kubectl get pods -n vigilance-france
# Liste des services
kubectl get services -n vigilance-france
# Logs d'un service
kubectl logs -f <pod-name> -n vigilance-france# Depuis l'API Gateway vers un microservice
kubectl exec -it <api-gateway-pod> -n vigilance-france -- wget -O- http://auth-service:80/healthkubectl describe pod <pod-name> -n vigilance-france
kubectl logs <pod-name> -n vigilance-franceCauses communes :
- Erreurs de connexion MongoDB/Redis
- Variables d'environnement manquantes
- Health checks échouant
Vérifier que authSource: "admin" est configuré dans les connexions Mongoose.
eval $(minikube docker-env)
docker images | grep vigilanceReconstruire les images si nécessaire avec --no-cache.
kubectl delete pod <pod-name> -n vigilance-franceKubernetes recréera automatiquement le pod.
Backend :
- Node.js 22 / TypeScript
- Express.js
- Mongoose (MongoDB ODM)
- Bull (Queue Redis)
- Passport.js (OAuth)
- WebSocket (Socket.io)
Frontend :
- React
- TypeScript
- Leaflet (cartes)
- Yarn
DevOps :
- Docker
- Kubernetes / Minikube
- MongoDB 8.0.4
- Redis 7.4.1
- Authentification OAuth 2.0 (Google, GitHub)
- Sessions sécurisées avec Redis
- Secrets Kubernetes pour données sensibles
- authSource configuré pour MongoDB
- Variables d'environnement pour configuration
Projet VigilanceFrance - "Une France Vigilante, des habitants en sécurité"







