Niv. 5 — Capstone : BookLab, le SaaS complet
Le projet final. Vous réunissez tout le cours pour livrer BookLab : un SaaS de réservation multi-tenant, avec API, front Next.js, temps réel, paiement, outil LTI et déploiement en production. C’est votre pièce de portfolio (Partie 17).
📋 Cahier des charges
Contexte — BookLab est vendu à plusieurs organisations (studios, cabinets, organismes de formation). Chacune gère ses prestataires, services, créneaux et réservations, isolée des autres. Un front Next.js public, un back-office admin, une API, et une intégration LMS (LTI) pour les organismes de formation.
Périmètre inclus
- Tout le modèle :
User,Provider,Service,Slot,Booking,Payment,Review. - Multi-tenant : résolution par sous-domaine, filtre Doctrine automatique, isolation testée.
- Deux visages : back-office Twig + EasyAdmin + Symfony UX (admins) et API (front Next.js public).
- Sécurité : session pour l’admin, JWT pour l’API, voters, 2FA pour les admins.
- Temps réel (Mercure), async (Messenger/Scheduler), paiement (Stripe + webhooks).
- Outil LTI 1.3 : BookLab s’ouvre depuis Moodle avec le contexte, renvoie une note (AGS).
- Qualité : tests (unitaires, fonctionnels, API), PHPStan, CI GitHub Actions.
- Production : Docker/FrankenPHP, migrations, workers supervisés, observabilité (Sentry), durcissement.
Périmètre exclu — rien : c’est le capstone. (Priorisez : voir « Étapes ».)
Livrables — une application déployée, un dépôt propre (CI verte), une page cas d’étude.
Critères de réussite
- Deux organisations (tenants) coexistent sans voir les données l’une de l’autre (test d’isolation).
- Le front Next.js réserve un créneau ; les places se mettent à jour en direct ; le paiement est confirmé par webhook.
- L’admin est protégé (session + rôle + 2FA) ; l’API est protégée (JWT + voters).
- Un lancement LTI depuis Moodle ouvre BookLab avec l’identité/le cours, et une note remonte dans Moodle.
- La CI est verte (tests + PHPStan + CS Fixer + audit) ; l’app est déployée.
🗺️ Endroits à visiter
Tout le cours. Les piliers :
| Pilier | Chapitres |
|---|---|
| Modèle & relations | Partie 6 |
| Back-office | Parties 7-8, 9 |
| Sécurité | Partie 10 |
| API + Next.js | Partie 11 |
| Temps réel & paiement | Partie 12 |
| LTI | 13.5 |
| Tests & CI | Partie 14 |
| Multi-tenant, prod, observabilité | Partie 15 |
| Positionnement produit | Partie 17 |
🧭 Étapes suggérées (par incréments livrables)
- Socle : modèle complet + migrations + fixtures (Partie 6).
- Back-office : EasyAdmin + quelques écrans Twig/UX (Parties 7-9).
- Sécurité : User, firewalls (session + JWT), voters, 2FA admin (Partie 10).
- API + front : API Platform + front Next.js (liste, réservation) (Partie 11).
- Vivant : Messenger (e-mails), Mercure (places live), Stripe (paiement) (Partie 12).
- Multi-tenant :
tenant_id, résolution sous-domaine, filtre Doctrine, tests d’isolation (15.9). - LTI : endpoints login/launch/jwks, lancement depuis Moodle, note via AGS (13.5).
- Qualité & prod : tests, PHPStan, CI (Partie 14), Docker/FrankenPHP, déploiement, Sentry (Partie 15).
- Portfolio : déployer une démo, écrire le cas d’étude, publier un bundle extrait (15.8, 17).
⚠️ Ne visez pas tout d’un coup. Livrez incrément par incrément (chaque étape est utilisable). C’est exactement la discipline d’un vrai projet — et le conseil de la Partie 17.3 : commencer petit, valider, grandir.
🏆 Ce que ça prouve : en réussissant BookLab, vous démontrez que vous savez concevoir, construire, sécuriser, tester, déployer et faire évoluer une application Symfony professionnelle avec son front Next.js — et la relier à Moodle. C’est la preuve qui vend (Partie 17). Faites-en votre vitrine.
Fin de la Partie 19. Vous avez un parcours pratique complet, du « hello » au SaaS. Il ne reste qu’à valider vos acquis.
Prochaine étape : Partie 20 — Quiz — l’auto-évaluation finale.