Documentation backend ikloze¶
ikloze est un CRM SaaS WhatsApp-first conçu pour les closers et les équipes de vente en Afrique. Il permet à un entrepreneur de capter des leads via des formulaires partageables, de les distribuer à ses closers, de piloter un pipeline de vente, et d'encaisser des paiements par Mobile Money ou carte bancaire — avec répartition automatique des commissions et un système d'escrow.
Ce site documente le backend : son architecture, ses modules métier, son API HTTP et les conventions de développement.
Par où commencer¶
-
Démarrage Installer, configurer l'environnement, lancer le serveur et la suite de tests.
-
Architecture Les cinq couches, le multi-tenant, les permissions, l'accès aux données et la gestion d'erreurs.
-
Modules Les domaines métier regroupés : Cœur, CRM & ventes, Finance, Transverses.
-
API HTTP Authentification, gardes, formats d'erreur et accès au Swagger.
Concept fondamental : le workspace¶
Tout dans ikloze est scopé à un workspace (espace de travail). Un entrepreneur crée un workspace, y invite des membres, et toutes les données (formulaires, leads, paiements) appartiennent à ce workspace. C'est la frontière multi-tenant fondamentale — voir Multi-tenant.
Stack technique¶
| Préoccupation | Technologie |
|---|---|
| Framework | NestJS 11 |
| ORM | Sequelize 6 (SQLite en dev/test, PostgreSQL en prod) |
| Validation | Zod |
| Authentification | JWT (access + refresh) via jsonwebtoken |
| Identifiants | ULID (26 caractères, triables) |
| Mots de passe | bcrypt |
| Téléphone | libphonenumber-js |
| Suivi d'erreurs | Sentry |
| Rate limiting | @nestjs/throttler |
| Runtime | Node.js 24, gestionnaire de paquets pnpm |
Organisation du dépôt¶
Le projet n'a pas de dossier src/. La structure est à plat, par couche :
ikloze-backend/
├── domain/ # Entités métier (données pures + fromRecord) et erreurs
├── app/<module>/ # Services use-case (TypeScript sans framework) + schémas Zod
├── web/<module>/ # Couche HTTP : contrôleurs NestJS, modules, gardes, filtres
├── adapters/ # Intégrations externes (email, paiement, stockage, IA…)
├── database/sequelize/# Modèles, migrations, accesseurs typés, associations
├── tests/ # Tests d'intégration et e2e, factories
└── docs/ # Cette documentation (MkDocs)
Voir Architecture › Vue d'ensemble pour le rôle de chaque couche.
Source de vérité
Les spécifications de fonctionnalités proviennent des issues GitHub du projet #3. Le fichier CLAUDE.md à la racine reste le guide canonique des conventions ; cette documentation l'étend et l'illustre.