Mon Bara - Plateforme Multi-Applications de Services à la Personne (Monorepo)
Projet en équipeMon Bara est une plateforme de mise en relation entre employés de maison (prestataires) et propriétaires (clients) en Afrique francophone. Le projet est conçu avec une architecture modulaire et découplée pour garantir la robustesse du système et la scalabilité des applications.
Architecture Globale & Stack Technique
Le projet est structuré sous forme de Monorepo orchestré avec pnpm et Turborepo, garantissant une modularité totale et un partage optimal du code.
Stack Technique :
- Backend : NestJS (TypeScript), PostgreSQL + PostGIS (requêtes géospatiales), Redis (cache/queues), Prisma (ORM), MinIO (stockage compatible S3).
- Frontend Mobile : React Native, Expo, NativeWind (styling).
- Frontend Web : Next.js (Admin & Landing Page), Vanilla CSS & TailwindCSS, Framer Motion.
- DevOps / CI/CD : Docker Compose (environnements de développement), GitLab CI, Coolify (déploiement continu sur VPS).
Points Clés & Accomplissements Techniques
1. Architecture Hexagonale & Principes SOLID (Backend)
- Découplage strict : Conception de l'API backend en Clean Architecture (Ports & Adapters) afin de séparer la logique métier (Domain/Application) des détails d'infrastructure (Prisma, SMS providers, services tiers).
- Orienté Cas d'Usage : Respect rigoureux du principe de responsabilité unique (SRP) avec des fichiers
*UseCaseunitaires encapsulant la logique métier, facilitant les tests unitaires et la maintenance du domaine.
2. Typage End-to-End et Zéro Duplication (DRY)
- Partage des schémas de validation : Utilisation de Zod au sein d'un package partagé (
@mon-barra/types), servant de source unique de vérité pour valider les données côté serveur (API) et typer les formulaires côté client (Next.js & React Native). - SDK Typé Généré automatiquement : Génération automatique d'un client HTTP typé (
@mon-barra/sdk) à partir des spécifications OpenAPI (Swagger) générées par NestJS, assurant une synchronisation automatique et immédiate lors des changements d'API.
3. Recherche Géospatiale Proximité & Temps Réel
- Algorithmes de géolocalisation : Exploitation des extensions spatiales PostGIS pour calculer en base de données les distances et apparier efficacement les clients avec les prestataires les plus proches.
- Communication bidirectionnelle : Intégration de WebSockets (via NestJS Gateways) pour les interactions en temps réel et la gestion dynamique des statuts.
4. Sécurité & Autorisation Avancée (ABAC)
- Contrôle d'accès basé sur les permissions (ABAC) : Implémentation d'un système d'autorisations sous forme d'autorités précises dans les payloads JWT (ex:
prestataire:write,kyc:approve), plutôt que de simples rôles statiques, offrant un contrôle granulaire au niveau de chaque endpoint.
5. Intégration & Déploiement Continus (CI/CD)
- Pipelines GitLab CI automatisées : Validation continue du code (Linting, tests unitaires, build) à chaque validation de code.
- CD GitOps via Coolify : Déploiement automatisé sur un VPS auto-hébergé à l'aide de webhooks sécurisés déclenchés par la CI (branche
devvers staging, tag de version vers production).
6. Design System Web Partagé
- Composants partagés : Centralisation des tokens graphiques et des composants d'interface Web réutilisables dans un package
@mon-barra/ui. - Richesse Visuelle : Intégration de cartes interactives dynamiques (SVG) et de transitions fluides pour les animations et dégradés des sections.
Technologies utilisées
Next.jsTailwind CSSReact.js
Population ciblée
Côte d'Ivoire
