Prolance est une plateforme SaaS multi-tenant conçue pour permettre aux entreprises de gérer efficacement leurs clients, projets, tâches, équipes et facturation dans un environnement centralisé, sécurisé et évolutif.
Chaque entreprise (tenant) dispose d’un espace isolé avec ses propres utilisateurs, données et configurations, garantissant ainsi la sécurité et la confidentialité des informations.
Le système est construit en utilisant une architecture microservices combinée avec une architecture hexagonale (Ports & Adapters) afin d’assurer une forte maintenabilité, une évolutivité optimale et une séparation claire des responsabilités.
Le système est découpé en plusieurs services indépendants, chacun responsable d’un domaine métier spécifique.
- Déploiement indépendant des services
- Scalabilité fine (par service)
- Isolation des pannes
- Maintenance facilitée
- Séparation claire des domaines métier
Chaque microservice est conçu selon l’architecture hexagonale, permettant de séparer :
- La logique métier (Domain)
- Les cas d’usage (Application)
- Les dépendances techniques (Infrastructure)
- Indépendance vis-à-vis des frameworks
- Testabilité améliorée
- Évolution facile des composants techniques
- Code métier propre et isolé
- Java 17
- Spring Boot
- Spring Web MVC
- Spring Data JPA
- Spring Security
- Spring Cloud Gateway (WebFlux)
- Keycloak
- JWT (JSON Web Tokens)
-
Resilience4j
- Circuit Breaker
- Retry
- Rate Limiter
- Time Limiter
Utilisé pour :
- protéger les appels inter-services
- éviter les cascades de pannes
- améliorer la stabilité globale du système
- PostgreSQL
- Une base de données par microservice
- Microservices
- Architecture Hexagonale
- Domain-Driven Design (DDD)
- Event-Driven Architecture
- Maven
- Docker
- Git / GitHub
Prolance est conçu comme une application multi-tenant, ce qui signifie que :
- Chaque entreprise possède ses propres données
- Les utilisateurs sont isolés par entreprise
- Les accès sont contrôlés par tenant
- Aucune fuite de données entre entreprises n’est possible
L’isolation est assurée par :
- les tokens JWT
- l’identifiant du tenant (
tenant_id) - des validations au niveau des services
Le système utilise Keycloak pour :
- Gérer les utilisateurs
- Authentifier les connexions
- Gérer les rôles et groupes
- Générer des tokens JWT sécurisés
Responsable de la gestion des entreprises (tenants).
- Création d’entreprise
- Gestion des paramètres
- Gestion des utilisateurs
- Attribution des rôles
- Synchronisation avec Keycloak
Responsable de la gestion des relations clients et du processus commercial.
- Gestion des leads
- Gestion des opportunités
- Gestion des clients
- Gestion des contacts
- Suivi du pipeline commercial
Lead → Opportunité → Gagnée / Perdue
Responsable de la gestion du cycle de vie des projets.
- Création de projet
- Gestion des jalons
- Suivi de l’état du projet
- Affectation des équipes
Création → Planification → Actif → Terminé
Responsable de l’exécution opérationnelle.
- Gestion des tâches
- Sous-tâches
- Assignation des utilisateurs
- Dépendances entre tâches
- Suivi de l’avancement
À faire → En cours → Revue → Terminé
Responsable de la gestion de la facturation.
- Génération de factures
- Gestion des lignes de facture
- Suivi des factures
- Association aux projets
️ Le paiement n’est pas inclus dans cette version.
Responsable de la communication interne.
- Notifications de tâches
- Alertes système
- Notifications d’événements
Les services communiquent via :
- API REST (communication synchrone)
- Événements internes (Event-Driven Architecture)
Prolance implémente le pattern Saga pour gérer les transactions distribuées entre microservices.
- Les services réagissent à des événements
- Pas de coordinateur central
- Faible couplage
- Un service orchestre le workflow
- Contrôle explicite des étapes
- Meilleure visibilité du flux
Le choix entre chorégraphie et orchestration dépend du contexte métier et de la complexité du workflow.
- Construire une plateforme SaaS scalable
- Assurer une isolation complète des tenants
- Fournir une architecture maintenable
- Implémenter des patterns robustes (Saga, Résilience)
- Préparer le système à une montée en charge future
Chaque service suit :
src
├── domain
├── application
└── infrastructure
- Intégration Kafka (Event Streaming)
- Notifications en temps réel
- Reporting avancé
- CI/CD complet
- Déploiement Kubernetes
- Analyse intelligente (IA)
Projet développé par Ali Yara.

