Surface 01
Espace agence
Interface Twig d’exploitation : flotte, clients, réservations, locations, contrats, paiements, facturation et maintenance.
Surface 02
Back-office SaaS
EasyAdmin pour l’opérateur de la plateforme : tenants, plans, comptes et suivi — séparé de l’espace agence.
Interface agence
Captures de l’espace Twig, sur un tenant de démonstration. Le produit n’est pas figé.
Problème métier
Véhicules, clients, contrats et paiements vivent souvent dans des tableurs et des outils disjoints. Une agence a besoin d’un seul espace, tout en restant isolée des autres agences sur la même application.
Architecture
Monolithe modulaire, découpé en contextes métier (Domain / Application / Infrastructure / UI). Le multi-tenant n’est pas un add-on : chaque enregistrement métier porte l’agence, un filtre Doctrine isole les requêtes, le back-office plateforme contourne le filtre à dessein.
- TenantsAgences isolées (schéma partagé, tenant_id, sous-domaine ou compte)
- DomainesFlotte · Clients · Réservations · Locations · Contrats · Paiements · Facturation · Maintenance
- ApplicationPHP 8.3 · Symfony 7.4 LTS · Doctrine ORM 3 · Messenger · Redis
- UITwig + Stimulus (agence) · EasyAdmin 5 (plateforme) · PDF Dompdf · e-mail
Points forts
Multi-tenant dès le modèle
Isolation par filtre Doctrine et contexte de requête. Un agent ne voit que son agence ; l’opérateur SaaS gère les tenants à part.
Droits réels, pas un seul ROLE_ADMIN
Rôles agence (owner, manager, agent, comptable, flotte) et permissions par domaine, contrôlées par voters.
Découpage métier lisible
Chaque contexte a son dossier. Les contrats, la flotte ou l’abonnement SaaS ne se mélangent pas dans un Controller/ fourre-tout.
Barre de qualité d’un produit soigné
PHPStan, PHP CS Fixer, PHPUnit, lint Twig/YAML, CI GitHub Actions (MySQL + Redis), Docker Compose et healthcheck.
Encore ouvert
Projet personnel, pas un SaaS commercial fermé. Le back-office agence (opérations quotidiennes) est largement en place. Paiement par carte, double authentification et inspections de remise / retour restent à faire — volontairement dit ici.
Mon rôle
Seul : produit, modèle de données, Symfony, UI agence, back-office, tests et CI.
Livrables et résultats
Réalisé dans le cadre de ma mission
- Back-office agence en place : tableau de bord, planning, réservations, locations, contrats, flotte, clients, paiements, factures, maintenance, rapports et paramètres.
- Stack actuelle : PHP 8.3, Symfony 7.4, MySQL, Redis, EasyAdmin 5.
- CI : analyse statique, tests et schéma Doctrine.
- Reste ouvert : paiement par carte, 2FA et inspections de remise / retour.
Stack
Backend
- PHP 8.3
- Symfony 7.4
- Doctrine ORM 3
- MySQL 8
- Messenger
- Redis
Front
- Twig
- EasyAdmin 5
- Stimulus
- Turbo
- Bootstrap 5
Livraison
- Docker
- PHPUnit
- PHPStan
- GitHub Actions
- Dompdf