Tous les projets

Backend & applications web

eBank · SaaS bancaire multi-tenant

Une plateforme SaaS bancaire multi-tenant : chaque organisation gère ses clients, ses comptes, ses virements simulés et ses permissions, strictement isolée des autres. Spring Boot, React et MySQL, avec un moteur de virement transactionnel, des tests automatisés et un déploiement sur AWS.

  • En cours de développement
  • Projet individuel
rôles, du client à l’admin plateforme
4
étapes contrôlées par virement
9
transaction pour le débit et le crédit
1
couches séparées, de React à AWS
6

01Le point de départ

Contexte & mission

Le problème

Dans une application financière, une erreur ne se voit pas à l’écran : c’est un solde faux, un virement compté deux fois ou une organisation qui lit les données d’une autre. Ce sont précisément ces risques que les projets bancaires de démonstration ignorent le plus souvent.

La mission

Concevoir une plateforme bancaire de simulation comme un vrai produit SaaS : isolation des organisations, virements cohérents même en concurrence, sécurité appliquée côté serveur, tests qui vérifient les invariants métier, puis conteneurisation, CI et déploiement cloud. Aucun paiement réel, aucun réseau bancaire réel.

Mon rôle

Projet personnel que je fais évoluer étape par étape : modélisation du domaine, règles métier, sécurité, tests, conteneurisation, CI/CD et infrastructure AWS.

02Réalisation

Ce que j’ai fait

  1. Architecture multi-tenant

    Données isolées par organisation : clients, comptes, transactions et ressources d’administration ne sont accessibles que dans leur tenant. Quatre rôles (administrateur plateforme, administrateur d’organisation, agent, client), autorisation appliquée côté backend.

  2. Moteur de virement

    Validation serveur du montant, du statut, de la propriété et du solde ; débit et crédit atomiques dans une seule transaction ; contrôle de concurrence contre les soldes incohérents ; idempotence contre les doubles requêtes ; rollback explicite en cas d’échec.

  3. Grand livre et intégrité

    Écritures de débit et de crédit cohérentes pour chaque virement, enregistrées dans la même transaction ; mouvements terminés protégés contre la modification ; contrôles de rapprochement entre soldes et écritures.

  4. Sécurité

    Authentification sans état par JWT, mots de passe hachés, RBAC avec Spring Security, contrôles de propriété et de tenant côté serveur, validation des requêtes, erreurs d’API cohérentes, secrets par environnement et journal d’audit des opérations sensibles.

  5. Administration SaaS

    Gestion des organisations et des utilisateurs, plans d’abonnement et quotas d’usage vérifiés par le backend, statuts d’abonnement et facturation simulée. L’administration plateforme est séparée des permissions d’organisation.

  6. Interface React

    Vues dédiées aux clients, agents et administrateurs ; tableaux de bord de comptes et historique paginé ; formulaires de virement avec validation et confirmation ; recherche, filtres, états de chargement, vides et d’erreur ; navigation protégée.

  7. Stratégie de test

    Tests unitaires des règles métier, tests d’API et de sécurité, intégration base de données avec Testcontainers, régression sur le rollback et les doublons, tests de concurrence sur des comptes partagés, tests front-end et end-to-end, le tout lancé en CI.

  8. DevOps & AWS

    Docker et Docker Compose pour des environnements reproductibles ; GitHub Actions pour les tests, les builds et le déploiement, avec des identifiants AWS éphémères via GitHub OIDC ; infrastructure décrite en code.

03Conception

Architecture

Un monolithe modulaire, découpé par responsabilité métier plutôt qu’en services inutiles : identité, organisations, clients, comptes, virements, grand livre, abonnements et audit. Les couches présentation, API, domaine, persistance, sécurité et infrastructure restent séparées. Le modèle MySQL utilise des contraintes relationnelles, des index, des types décimaux précis pour l’argent et des migrations versionnées.

Les couches de l’application
  1. PrésentationReact · routes · formulaires
  2. API RESTContrôleurs · DTO · validation
  3. DomaineRègles · virements · abonnements
  4. PersistanceJPA · Hibernate · MySQL
En appui
  • SécuritéSpring Security · JWT · isolation des tenants
  • InfrastructureDocker · Nginx · CI/CD · AWS
Le trajet d’un virementTout est validé ou rien n’est écrit : un débit sans crédit est impossible.
  1. Contrôle d’accèsJWT · permissions · tenant
  2. ValidationMontant · statut · devise · solde
  3. IdempotencePas de double traitement
  4. TransactionContrôle de concurrence
  5. Débit · crédit+ écritures du grand livre
  6. CommitSinon rollback complet
Déploiement sur AWS
  1. CloudFront + S3Front-end React · CDN
  2. ECS FargateAPI Spring Boot conteneurisée
  3. RDS for MySQLBase managée
En appui
  • IAMMoindre privilège
  • Secrets ManagerConfiguration sensible
  • CloudWatchLogs · alertes
  • Certificate ManagerTLS
  • Terraform / CloudFormationInfrastructure as Code
  • GitHub ActionsCI/CD · OIDC

04Impact

Résultats

  • Un projet d’ingénierie complet : front-end, architecture backend, modèle relationnel, authentification, autorisation, transactions, tests, conteneurisation et déploiement cloud.
  • Des invariants métier protégés par le code et par les tests : soldes cohérents, virements traçables, organisations isolées.
  • Une simulation pédagogique assumée : aucun paiement réel, aucun réseau bancaire réel.

05Bilan

Ce que j’en retiens

Ce que ce projet démontre

Que je sais raisonner sur des flux métier critiques, concevoir des API REST fiables, faire respecter des frontières de sécurité, garantir l’intégrité des données et faire évoluer une application jusqu’au cloud, avec des tests à chaque étape.

Enseignements et suite

Principes suivis tout au long du projet : séparation des responsabilités, SOLID là où il simplifie, invariants métier explicites, sécurité par défaut, tests de régression automatisés, environnements reproductibles, Infrastructure as Code, observabilité, et décisions d’architecture documentées.

06Technologies

Stack complète

  • Java 17
  • Spring Boot 3.2
  • Spring Security
  • Spring Data JPA
  • Hibernate
  • JWT
  • Bean Validation
  • MySQL 8
  • React 19
  • React Router
  • Axios
  • JUnit 5
  • Mockito
  • MockMvc
  • Testcontainers
  • Vitest
  • React Testing Library
  • Playwright
  • Docker
  • Docker Compose
  • Nginx
  • GitHub Actions
  • AWS ECS Fargate
  • Amazon RDS
  • Amazon S3
  • CloudFront
  • AWS IAM
  • Secrets Manager
  • CloudWatch
  • Terraform