🔒Paiement 100 % sécurisé 🕐Support 24/7 🌍FedaPay & Stripe — Mobile Money & cartes

Aperçu technique

Aperçu technique de Sikaflow

Sikaflow est une plateforme SaaS B2B multi-tenant de gestion de tontines (épargne rotative communautaire / ROSCA), 100 % serverless sur AWS eu-west-3, alignée sur l'infrastructure de RMS International Group.

Rôles & modèle métier

Trois espaces isolés, trois rôles Keycloak. Les gestionnaires sont les clients payants ; RMS supervise la plateforme ; les participants disposent d'un espace personnel restreint.

Espace Rôle Fait quoi
Admin (RMS) ADMIN_PLATFORM Onboarding / suspension des gestionnaires, forfaits, KPIs consolidés multi-tenant, sécurité & facturation.
Gestionnaire MANAGER Créer / paramétrer des groupes, gérer participants, suivre cotisations, décaissements, sa propre facturation.
Participant PARTICIPANT Voir ses groupes, payer (FedaPay / Stripe / hors-ligne), historique, reçus, notifications.
🔑Règle d'or

Un gestionnaire ne voit jamais les données d'un autre. Le tenantId provient toujours du JWT Keycloak, jamais du corps de requête. Revenus : accès gratuit + forfaits optionnels (Starter / Pro / Business) ; le gestionnaire fixe sa commission (1–10 %) et Sikaflow en garde une part fixe de 25 %.

Architecture

Frontend statique diffusé par CloudFront ; authentification déléguée à Keycloak (PKCE / OIDC) ; API Lambda derrière un authorizer qui résout le tenant depuis le JWT ; données en DynamoDB single-table ; un scheduler EventBridge horaire pilote le moteur de cycles.

  Navigateur (SPA statique, FR/EN/PT/ES)
        |
        v
  CloudFront + S3  ──────────────  Keycloak  (realm « sikaflow », OIDC/PKCE)
   sikaflow.grouperms.com                 |  rôles + tenantId
        |                                 |
        |  JWT  (tenantId injecté par l'authorizer)
        v
  API Gateway REST  ->  Lambda API (Node.js 20)
                          routeur : 12 handlers / 9 librairies
        |               |               |
        v               v               v
   DynamoDB        FedaPay / Stripe   SES / SNS
  single-table      webhooks +       notifications
  TENANT#<id>      réconciliation
        ^
   EventBridge  rate(1 hour)  ->  Lambda scheduler  (moteur de cycles)

La stack, couche par couche

🖥️

Frontend

HTML / CSS / JS vanilla statique, sans build ni framework. Multilingue FR / EN / PT / ES par bascule de classes CSS, header/footer partagés via includes.js, graphiques SVG inline sans dépendance. ~30 pages. Hébergé sur S3 + CloudFront.

⚙️

Backend

Node.js 20 sur AWS Lambda + API Gateway REST. Trois Lambdas : l'API principale (routeur, 12 handlers / 9 librairies), le scheduler horaire et le webhook de paiement. SDK AWS v3, jsonwebtoken + jwks-rsa, stripe, axios.

🗄️

Base de données

DynamoDB en single-table design, partitionnée par TENANT#<managerId>, index secondaire GSI1 pour les vues transverses. Protection de suppression activée en production.

🔐

Authentification

Keycloak mutualisé RMS, realm sikaflow, PKCE (S256) pour le client SPA public sikaflow-web. Le scope sikaflow-tenant porte tenantId + rôles + audience. OTP (TOTP) applicable au niveau du realm.

💳

Paiements

FedaPay (primaire, Mobile Money + cartes, XOF) + Stripe (secondaire, international) + hors-ligne validé par le gestionnaire. Webhooks + réconciliation, garde-fous anti-double-crédit. Clés côté serveur uniquement.

☁️

Infra as Code

AWS SAM / CloudFormation (infra/template.yaml), environnements preprod / prod paramétrés. Preprod verrouillée (Basic Auth via CloudFront Function + noindex). Secrets en SSM Parameter Store, jamais en clair. Déploiement via deploy.sh.

Sécurité & cloisonnement multi-tenant

Environnements

  Preprod Production
Stacksikaflow-preprodsikaflow-prod
Régioneu-west-3eu-west-3
CloudFrontE3RN4IBY2KA6GYE1VFPP50O6TOZS
DynamoDBsikaflow-preprodsikaflow
Mode démo · mock-data live
Accès Basic Auth + noindex public

Qualité & tests

Les zones à plus haut risque — moteur de cycles et logique de paiement — sont couvertes en priorité, avec un test de non-fuite inter-tenant obligatoire.

203
tests Jest
9
suites de test
12
handlers API
4
langues

État du projet

En production, mode réel actif (Keycloak PKCE + API + 203 tests). Connexion, provisioning des comptes et cycle d'argent (cotisation → décaissement → commission, part Sikaflow 25 %) validés de bout en bout. Restent à finaliser : poser les clés de paiement live puis activer les décaissements, appliquer les en-têtes de sécurité en prod, construire les écrans encore simulés, activer le domaine API custom et brancher les notifications SES/SNS.

ℹ️Détail & priorités

La feuille de route détaille l'état par phase. La documentation technique complète vit dans le dépôt : docs/overview.md, docs/architecture.md, docs/database-schema.md, docs/payments.md.