Portfolio / Projets / e-passAvenue

Dev Full-Stack · Billetterie

e-passAvenue
le billet qui ne se copie pas

Billetterie électronique pour le marché européen. Achat par carte, billet remis aussitôt, code QR signé qui se renouvelle toutes les trente secondes. Le contrôle d'accès fonctionne même sans réseau : à la porte d'une salle, le réseau est la première chose qui manque

Rôle Dev Full-Stack & Designer
Client PrestAvenue · POEM Group
Année 2026
Stack Laravel 13 · MySQL 8.4 · Redis · React · Vite
e-passAvenue, catalogue des événements à l'affiche

À propos du projet

PrestAvenue organise des événements en France et en Europe. Vendre les places était devenu le maillon faible : un tableur pour les inscrits, des billets PDF qui circulaient par capture d'écran, et le soir de l'événement une file qui s'allonge parce que le réseau de la salle ne suit pas

e-passAvenue reprend la chaîne entière. L'acheteur paie par carte et reçoit ses billets avant que la page ait fini de charger. L'organisateur ouvre son espace, publie ses tarifs et suit ses recettes en direct. L'équipe d'accueil scanne, retrouve et valide, hors ligne s'il le faut. L'administration vérifie les organisations et garde un journal d'audit

Quatre métiers, une seule base

Une API JSON Laravel sert quatre interfaces React : le site public, le porte-billets, la console organisateur et le poste de contrôle. Les décisions difficiles sont toutes du même côté : celui du serveur

01

Un code qui ne se copie pas

Le code QR est signé et se renouvelle toutes les trente secondes sur le téléphone du porteur. Une capture d'écran partagée arrive périmée. Le secret qui génère le code ne quitte jamais le serveur

02

Le contrôle marche sans réseau

Le poste de contrôle est installable et garde de quoi décider hors ligne : scan caméra, verdict immédiat, synchronisation quand le réseau revient. À la porte d'une salle, c'est la seule hypothèse réaliste

03

Impossible de survendre

Contrainte vérifiée en base, verrou de ligne pendant la transaction, réservation qui expire après quinze minutes. Un test ouvre une seconde connexion MySQL pour prouver que le verrou existe vraiment, au lieu de le supposer

04

Le paiement décide, pas le navigateur

L'émission des billets est déclenchée par le webhook du prestataire, jamais par la redirection du navigateur. Le traitement réinterroge le prestataire au lieu de croire la charge utile reçue. Aucun montant en flottant, des entiers de bout en bout

05

Quand le code ne passe pas

Un seul champ de recherche retrouve la personne par nom, acheteur, adresse, téléphone, référence de commande ou de billet, entreprise ou service. L'entrée forcée enregistre l'agent, l'heure, le justificatif et le motif

06

Billets nominatifs, revente encadrée

Le nominatif se décide par type de tarif : celui qui achète n'est pas forcément celui qui entre. La revente entre particuliers est plafonnée au barème de l'organisateur, encaissée pour le compte du vendeur

Le parcours, de l'affiche à la porte

Ce que le système promet

30 s de durée de vie par code Le billet se renouvelle : une capture d'écran ne vaut rien
0 réseau nécessaire à la porte Poste de contrôle installable, décision hors ligne, synchro au retour
15 min de réservation, puis la place repart Verrou de ligne et contrainte en base : la survente est impossible
5 interfaces sur une seule API Site public, porte-billets, console organisateur, poste de contrôle, console plateforme

Le marché est européen, la règle aussi

L'Acte européen sur l'accessibilité s'applique au commerce en ligne. Chaque champ est lié à son libellé, chaque commande à icône porte un nom, le verdict d'un contrôle est annoncé et pas seulement coloré, et le focus reste visible au clavier

La chaîne de qualité tourne à l'identique en local et en intégration continue : style, analyse statique, tests, contrat d'API, types, build, puis des parcours complets dans un vrai navigateur sur base fraîche. Un crochet refuse de pousser si la vérification échoue

Et maintenant ?

Une plateforme qui tient le soir J ?

Paiement, contrôle d'accès, hors ligne, audit : on en parle