Qredon
Mai 2026

Plateforme SaaS de gestion
de microfinance

Une solution multi-tenant pour les institutions de microfinance d'Afrique du Nord & Moyen-Orient. 4 surfaces applicatives — Admin Platform, Espace IMF, Portail Emprunteur, App Mobile native — partageant une API NestJS unifiée.

Les 4 plateformes

Chaque plateforme cible une audience spécifique et expose ses propres fonctionnalités tout en partageant l'API NestJS et la base PostgreSQL multi-tenant.

Phase 1 Port 3000

Admin Platform

Console de gestion plateforme pour l'équipe Qredon

Gérer les IMF clientes (tenants), facturation, modules, monitoring santé, audit trail global.

Super Admin Admin Tech Support
Découvrir →
Phase 2 Port 3001

Espace IMF

Interface métier quotidienne des employés IMF

Emprunteurs, prêts, remboursements, portefeuille, agences, régions, équipes, paramètres tenant — 25 pages métier.

DG Dir. Régional Dir. Agence Agent Caissier
Découvrir →
Phase 3 Port 3002 (PWA)

Portail Emprunteur

Self-service web pour les clients finaux

Inscription OTP, simulation prêt, demande en ligne, suivi temps-réel, remboursements, documents, attestations QR. Multilingue FR/AR/EN.

OTP Phone OAuth Google PWA Offline
Découvrir →
Phase 4 Android + iOS natif

Application Mobile

Kotlin Multiplatform 2.3 + Compose Multiplatform 1.10

Parité fonctionnelle avec le portail web + biométrie native, capture caméra KYC, notifications push FCM/APNs (en cours d'implémentation).

Android ✅ iOS shell ✅ Caméra en cours
Découvrir →

Données de test

Le seed (api/prisma/seed.ts) provisionne 1 super admin Qredon, 3 tenants (Al-Amal Microfinance actif + 2 démos), 9 employés IMF couvrant tous les rôles, 10 emprunteurs couvrant tous les statuts KYC, 4 agences dans 2 régions, et 3 produits de prêt.

🔑 Mots de passe communs (dev/demo)
  • • Admin Qredon : Admin123!
  • • Tous les utilisateurs IMF : Qredon2026!
  • • Emprunteurs : pas de password — login par OTP SMS (codes visibles sur MailHog)
🌐 URLs de test (à configurer selon l'environnement)
PlateformePattern URL
Admin Platformhttps://admin.{domaine}
Espace IMFhttps://app.{slug-tenant}.{domaine}
Portail Emprunteurhttps://my.{slug-tenant}.{domaine}
API RESThttps://api.{domaine}/api/v1
API Docs (Swagger)https://api.{domaine}/api/v1/docs
Interception emails (dev)https://mail.{domaine} (MailHog ou équivalent)

Les URLs réelles dépendent de votre déploiement. En environnement de test local, les ports par défaut sont 3000 (admin) / 3001 (imf) / 3002 (client) / 4000 (api) / 8025 (mailhog).

🏛️ Admin Platform — port 3000

Le seed ne crée qu'un seul Super Admin. Les autres rôles (ADMIN_TECH, SUPPORT) sont à créer manuellement depuis /users/new.

EmailMot de passeRôleDroits
admin@qredon.io Admin123! SUPER_ADMIN Accès total — bypass RolesGuard
À créer manuellement : ADMIN_TECH (gère tenants/modules, pas de suspension) · SUPPORT (lecture seule)

🏦 Espace IMF — port 3001

Tenant : al-amal-mf · Mot de passe commun : Qredon2026! · Les rôles sont hiérarchisés (rang 6 → 1) et chaque utilisateur ne voit que les données de son périmètre.

EmailNom completRôle (rang)Périmètre / AgenceTéléphone
karim.bouazizi@al-amal.tn Karim Bouazizi DG (5) Vue nationale — tout voir
moez.gharbi@al-amal.tn Moez Gharbi ADMIN_IMF (6) Accès Settings — admin technique tenant +216 70 200 008
sonia.mekki@al-amal.tn Sonia Mekki DIRECTEUR_REGIONAL (4) Région Grand Tunis (REG-GT) — voit 3 agences +216 70 200 001
nabil.jebali@al-amal.tn Nabil Jebali DIRECTEUR_AGENCE (3) Tunis Centre (AGC-TC) +216 70 200 002
rania.benamor@al-amal.tn Rania Ben Amor DIRECTEUR_AGENCE (3) La Marsa (AGC-LM) +216 70 200 003
youssef.trabelsi@al-amal.tn Youssef Trabelsi SUPERVISEUR_CREDIT (2) Tunis Centre — supervise les agents +216 70 200 004
fatma.chaabane@al-amal.tn Fatma Chaabane AGENT (1) Tunis Centre — assigné à plusieurs emprunteurs +216 70 200 005
ahmed.dridi@al-amal.tn Ahmed Dridi AGENT (1) La Marsa — assigné aux emprunteurs Marsa +216 70 200 006
salma.hamdi@al-amal.tn Salma Hamdi CAISSIER (1) Tunis Centre — enregistre les paiements +216 70 200 007

🏛️ Tenants seed (3 IMF démo)

Display NameSlugPlanPaysStatutModules activés
Al-Amal Microfinance al-amal-mf Growth TN (TND) ACTIVE BORROWER_PORTAL · ADVANCED_ANALYTICS · SMS_ALERTS
Test IMF test-imf Starter TN (TND) ACTIVE (aucun)
Qredon Demo qredon-demo Growth TN (TND) ACTIVE BORROWER_PORTAL · ADVANCED_ANALYTICS · SMS_ALERTS

👥 Emprunteurs seed — port 3002 (Portail Client)

Tenant : al-amal-mf · Pas de mot de passe — login par OTP SMS. En dev, le code OTP est envoyé via MailHog (interception emails locale, accessible via l'URL définie pour votre environnement).

TéléphoneNomCINAgenceStatut KYCSource inscription
+216 55 101 001 Mohamed Ben Salah 07891234 Tunis Centre VERIFIED Agent manuel
+216 55 102 002 Amira Zarrouki 07892345 La Marsa VERIFIED Agent manuel
+216 55 103 003 Ridha Oueslati 07893456 Nabeul VERIFIED Agent manuel
+216 55 104 004 Ines Bouzid 07894567 Tunis Centre PENDING_REVIEW OTP phone
+216 55 105 005 Walid Chahed 07895678 La Marsa PENDING_REVIEW OAuth Google
+216 55 106 006 Sarra Mansouri (non renseigné) Hammamet PENDING_PROFILE OTP phone
+216 55 107 007 Hatem Khelifi (non renseigné) Nabeul PENDING_PROFILE OTP phone
+216 55 108 008 Fathi Derbali 07896789 Tunis Centre REJECTED Agent manuel (revenus insuffisants)
+216 55 109 009 (en cours OTP) PENDING_OTP OTP phone (inscription en cours)
+216 55 110 010 Leila Haddad 07897890 La Marsa ADDITIONAL_INFO OTP phone (compléments demandés)
💡 Récupérer un OTP en dev

Quand tu fais "Recevoir le code SMS" sur le Portail, l'OTP est intercepté par MailHog au lieu d'être envoyé réellement. Ouvre l'interface MailHog de votre environnement de dev et clique sur le dernier email reçu — le code 6 chiffres y figure.

🗺️ Organisation géographique (tenant al-amal-mf)

Régions (2)

CodeNomDirecteur
REG-GTGrand TunisSonia Mekki
REG-CBCap Bon

Agences (4)

CodeNomRégionDirecteur
AGC-TCTunis CentreGrand TunisNabil Jebali
AGC-LMLa MarsaGrand TunisRania Ben Amor
AGC-NBNabeulCap Bon
AGC-HMHammametCap Bon
🔄 Re-seeder la base si les données ont divergé
docker compose -f docker-compose.local.yml exec api node dist/prisma/seed.js

Le seed est idempotent : il ne crée pas de doublons si les données existent déjà.