Architecture & Stack Technique
Monorepo enterprise multi-services — hexagonale · SPI · multi-tenant · dual-API · GitOps autonome
Stack Technique Globale
| Couche | Technologies | Services concernés |
|---|---|---|
| Backend principal | Java 21 · Spring Boot 3 · Maven | eitsarl · marketplace · FreeWa · fintech · Social Agent |
| Backend secondaire | Python 3.13 · FastAPI | fintech (API simulation/IA) |
| Frontend | Angular 17-19 · SSR · Signals · ngx-translate | Tous services (standalone components) |
| Bridge messaging | Node.js · whatsapp-web.js | FreeWa (pont WhatsApp multi-tenant) |
| Bases de données | PostgreSQL 16 · MySQL 8 · Flyway | PostgreSQL (tous) · MySQL (FreeWa) |
| Cache | Redis 7 | KamerBuy · FreeWa · fintech |
| Reverse proxy | Nginx multi-domaine · Caddy auto-HTTPS | Nginx (VPS) · Caddy (FreeWa) |
| Containerisation | Docker Compose (autonome par service) | Tous — pas de Kubernetes (VPS single-node) |
| CI/CD | GitHub Actions · GitOps bare repo + hooks | Tous — branches dev/live + post-receive |
| Tests | JUnit 5 · AssertJ · Testcontainers | KamerBuy (intégration PostgreSQL réelle) |
Patterns Architecturaux par Service
| Service | Pattern | Spécificités clés |
|---|---|---|
| KamerBuy | Hexagonale par bounded context | catalog · pricing · order · payment · ledger · iam · notification · shared — Money(long, Currency) immuable, FxService datée, OrderStateMachine explicite |
| FreeWa | Multi-tenant par UUID | Sessions WhatsApp isolées par UUID · bridge Node.js indépendant · wallet Unités Internes · rôles SUPERADMIN/ADMIN/CLIENT/AGENT |
| Fintech | Dual-API Java+Python | Spring Boot métier (Auth JWT, Budget, ERP sync) + FastAPI IA (simulations, recommandations) · WebSocket STOMP chatbot · ERPNext v16 sync |
| Social Agent | SPI + ServiceLoader | 13 modules Maven · 8 connecteurs plateforme · Spring Boot Starter auto-configuration · extensibilité zero-change (nouvelle plateforme = nouvelle dépendance) |
| eitsarl · marketplace | REST + SSR | Spring Boot 3 · Angular 17 SSR standalone · ngx-translate FR/EN · Admin CMS · SEO-first (référencement B2B Douala) |
{{ lang() === 'en' ? 'Notable Architecture Decisions' : 'Décisions d'Architecture Notables' }}
Money immuable (KamerBuy)
Money(long minorUnits, Currency) — jamais de double ou BigDecimal pour le stockage monétaire. Élimine les erreurs d'arrondi dans les calculs de commissions multidevises (FCFA, USD, CNY, EUR). Convention issue de la finance institutionnelle.
SPI + ServiceLoader (Social Agent)
Extensibilité zéro-friction : ajouter un connecteur Facebook, TikTok ou LinkedIn n'exige aucune modification du core. Il suffit d'ajouter une dépendance Maven. Pattern Open/Closed Principle appliqué à l'architecture modulaire.
Sessions UUID isolées (FreeWa)
Chaque instance WhatsApp Business est identifiée par UUID unique. L'isolation est garantie en base (chaque tenant opère sur ses propres lignes) et en mémoire (sessions Node.js distinctes). Aucun cross-tenant possible architecturalement.
Dual-API Java+Python (Fintech)
Java gère la robustesse du domaine métier (Auth JWT, budget, comptabilité OHADA, sync ERPNext). Python gère l'agilité IA (simulations financières, recommandations patrimoniales, chatbot). Séparation claire : JVM pour la fiabilité, Python pour la rapidité d'expérimentation.
DevOps & Conventions de Déploiement
Chaque service est autonome et déployable indépendamment depuis son répertoire. Aucune dépendance au parent du monorepo pour déployer. Le workflow GitOps suit un modèle à deux remotes :
- terminal
make push-dev→ push sur staging (hedcm.com) — hook post-receive déclenchedocker compose up --build - terminal
make promote→ merge dev→live + push sur production (vps.eitsarl.com) — hook prod avec--no-cache - terminalServices systemd (
eitsarl,marketplace,kamerbuy,eit-infra) gèrent le démarrage au boot et le redémarrage automatique - terminalHTTPS obligatoire via certbot Let's Encrypt (webroot) — Nginx multi-domaine ou Caddy auto-HTTPS selon le service
Contributions & Intégrations
- check_circle_outlineSocial Agent SDK — Spring Boot Starter Maven · contribution connecteurs plateforme (Facebook, TikTok, LinkedIn, X, YouTube, Snapchat, Threads) · contact@eitsarl.com
- check_circle_outlineKamerBuy API — OpenAPI 3 · dropshipping B2B (5 %) · integration partenaire logistique · contact@eitsarl.com
- check_circle_outlineFreeWa API — REST Spring Boot 3 · bridge Node.js · intégration whatsapp-web.js · white-label possible
Prêt à passer à l'étape suivante ?
Contactez-nous — nous répondons sous 24h ouvrées.