LA.
projet personnel · démo jouable

Rally

Un companion de match en temps réel. Tu suis le jeu coup par coup, tu fais des pronostics pour le fun, et tu grimpes au classement. La première démo tourne sur un match rejouable : France-Australie, Coupe du monde FIBA 2019.

Le produit

Pas de streaming, juste l'essentiel du match en direct et de quoi jouer avec. L'idée : transformer un spectateur passif en joueur actif, sans argent, juste pour le fun.

Scoreboard live
score, quart-temps et chrono, dérivés du moteur en continu
Barre de momentum
la dynamique du match d'un coup d'oeil, la signature visuelle
Pronostics pour le fun
qui marque les prochains points, qui gagne le quart-temps
Classement et badges
ta progression face aux bots et aux autres joueurs, en direct
Play-by-play
le fil des actions, en temps réel

l'architecture

Du temps réel, proprement distribué.

Front statique servi par le CDN, backend AWS event-driven, avec deux mécaniques temps réel. Une horloge partagée, dérivée d'un anchor serveur, fait voir à tous les visiteurs la même seconde du match. Et un WebSocket relaie en direct la présence des joueurs et leurs pronostics, sans que le serveur ne calcule le moindre score : chaque client dérive le même classement de son côté, au bit près, bots déterministes compris. Si l'anchor ne répond pas, fallback gracieux sur un replay local : le site ne casse jamais.

Lambda
expose l'anchor du match (Function URL) et pilote la room temps réel : connexion, join, pronostic
API Gateway WebSocket
le temps réel : présence des joueurs et pronostics relayés à tous, en direct
DynamoDB
la mémoire : anchor partagé, connexions actives et unicité des pseudos
EventBridge
le gardien : surveille et régénère l'anchor en continu (self-heal)
IAM + CloudWatch
permissions au plus juste, logs et observabilité
SAM · eu-west-3
toute l'infra décrite en YAML, déployée d'une commande
Vercel + Next.js
front statique, horloge calée sur le serveur, fallback replay local

Moteur event-sourced en TypeScript pur, bots semés et classement dérivé au bit près côté client, sans aucun scoring serveur. Infra en SAM (IaC, eu-west-3), WebSocket en prod. Prochaine étape : durcir la validation des pronostics côté serveur, puis migrer vers CDK.

V1 complète, en ligne.

La V1 tourne sur un match figé France-Australie, ce qui la découple de toute API sportive. Tout est déjà là : horloge partagée, présence des joueurs en direct, et un classement multijoueur où chacun voit le même résultat. La suite : une vraie source de données sportive, des comptes joueurs et plus de badges. C'est mon terrain de jeu pour pousser le temps réel et AWS en conditions réelles.