Des extras en moins de 2 heures
La plateforme temps réel qui connecte restaurateurs et extras. J'ai repris son MVP et l'ai redressé en production, seul, de l'app au back.


Le parcours restaurateur tient en quatre écrans. Il choisit le profil recherché, pose ses exigences par ordre d'importance, publie la mission, puis confirme la présence de l'extra une fois sur place. Tout le reste, la recherche, la mise en relation et le suivi, se fait sans intervention.
Côté extra, la progression est gamifiée. De Novice à Master, l'XP récompense les missions complétées et les avis reçus, ce qui fait remonter les meilleurs profils et donne une raison de revenir.

Une mission passe par cinq états, open, matched, in_progress, waiting_feedback puis completed. Toutes les transitions passent par une machine à états unique, exécutée en transaction. Deux extras ne peuvent donc pas accepter la même mission, même à quelques millisecondes d'écart.
Chaque changement est ensuite diffusé en WebSocket via Reverb. Les événements légers partent dans la foulée de la requête ; les plus coûteux, comme le recalcul de la carte de tension, transitent par la queue Horizon et ne sont diffusés qu'une fois prêts.

Laravel était déjà là. Changer de back en big bang sur un produit en production était inenvisageable, alors je l'ai gardé et redressé de l'intérieur, domaine par domaine, en m'appuyant sur ce que le framework fournit déjà (Reverb, Horizon, Redis, Passport).
Le contrôleur géant a été découpé en services métier injectés par constructeur, les opérations sensibles passent en transaction avec verrou, et les traitements lourds partent en queue. Côté infra, j'ai quitté AWS pour un serveur Hetzner, avec un vrai CI/CD GitHub Actions qui build les images Docker et les déploie par SSH, sans intervention manuelle.









