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
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.
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.
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.
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.
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.
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.
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.
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.
- PrésentationReact · routes · formulaires
- API RESTContrôleurs · DTO · validation
- DomaineRègles · virements · abonnements
- PersistanceJPA · Hibernate · MySQL
- SécuritéSpring Security · JWT · isolation des tenants
- InfrastructureDocker · Nginx · CI/CD · AWS
- Contrôle d’accèsJWT · permissions · tenant
- ValidationMontant · statut · devise · solde
- IdempotencePas de double traitement
- TransactionContrôle de concurrence
- Débit · crédit+ écritures du grand livre
- CommitSinon rollback complet
- CloudFront + S3Front-end React · CDN
- ECS FargateAPI Spring Boot conteneurisée
- RDS for MySQLBase managée
- 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émontreQue 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.
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