La Nuit des Purges
Un escape game grandeur nature se joue en équipe : les joueurs devaient pouvoir s'inscrire et former leur équipe seuls, et les organisateurs identifier chacun à l'entrée. J'ai développé toute la plateforme de réservation.
Le besoin
La Nuit des Purges est un événement de type escape game grandeur nature, imaginé dans le cadre d'une SAÉ en équipe à l'IUT de Troyes. Comme on y joue par équipes, l'inscription ne pouvait pas se résumer à un simple formulaire de contact.
Deux publics avaient des besoins différents : les participants voulaient s'inscrire, constituer leur équipe et obtenir leur billet sans passer par un organisateur ; les organisateurs voulaient savoir qui vient, dans quelle équipe, et pouvoir identifier chaque participant le jour de l'événement.
La solution
Une plateforme de réservation complète. Dans l'équipe, j'ai pris en charge tout le développement :
- Comptes participants : inscription et connexion.
- Équipes : créer une équipe ou en rejoindre une, avec des règles contrôlées côté serveur.
- Billets : génération dynamique d'un billet PDF avec QR code pour chaque participant.
- Back-office : tableau de bord administrateur (CRUD) pour que les organisateurs gèrent l'événement.
Mes choix techniques
Des règles d'équipe vérifiées côté serveur
Taille maximale d'une équipe, joueur déjà inscrit ailleurs : chaque règle est contrôlée en PHP avant d'enregistrer quoi que ce soit. Une vérification faite uniquement dans le navigateur peut être contournée ; seul le serveur fait foi.
Un billet PDF avec QR code
Un billet par participant, à imprimer ou à garder sur son téléphone, que les organisateurs peuvent identifier en scannant le QR code à l'entrée.
PHP natif et MySQL, sans framework
C'était la stack travaillée ce semestre. Elle m'a obligé à gérer moi-même les sessions, les requêtes et la sécurité, et donc à comprendre ce qu'un framework fait à ma place.
La difficulté principale
La gestion des équipes. Une équipe ne doit pas dépasser sa taille maximale et un joueur ne peut pas être inscrit dans deux équipes. Sans contrôle, les données deviennent vite incohérentes.
J'ai centralisé ces règles côté serveur : avant chaque inscription ou ajout à une équipe, le PHP vérifie la taille de l'équipe et l'inscription existante du joueur, et refuse l'action si une règle n'est pas respectée.
Ce que je referais autrement
- Passer sur Symfony : Security pour l'authentification, les formulaires pour la validation et Doctrine pour la base, plutôt que de tout recoder à la main.
- Envoyer le billet par email automatiquement après l'inscription, en plus du téléchargement.
Ce que j'ai appris
Stack technique
Technologies et outils utilisés :