Skip to Content

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 :

PilierChapitres
Modèle & relationsPartie 6
Back-officeParties 7-8, 9
SécuritéPartie 10
API + Next.jsPartie 11
Temps réel & paiementPartie 12
LTI13.5
Tests & CIPartie 14
Multi-tenant, prod, observabilitéPartie 15
Positionnement produitPartie 17

🧭 Étapes suggérées (par incréments livrables)

  1. Socle : modèle complet + migrations + fixtures (Partie 6).
  2. Back-office : EasyAdmin + quelques écrans Twig/UX (Parties 7-9).
  3. Sécurité : User, firewalls (session + JWT), voters, 2FA admin (Partie 10).
  4. API + front : API Platform + front Next.js (liste, réservation) (Partie 11).
  5. Vivant : Messenger (e-mails), Mercure (places live), Stripe (paiement) (Partie 12).
  6. Multi-tenant : tenant_id, résolution sous-domaine, filtre Doctrine, tests d’isolation (15.9).
  7. LTI : endpoints login/launch/jwks, lancement depuis Moodle, note via AGS (13.5).
  8. Qualité & prod : tests, PHPStan, CI (Partie 14), Docker/FrankenPHP, déploiement, Sentry (Partie 15).
  9. 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.