Rally
A real-time match companion. You follow the game play by play, make predictions for fun, and climb the leaderboard. The first demo runs on a replayable match: France vs Australia, 2019 FIBA World Cup.
The product
No streaming, just the essentials of the game live and something to play with. The idea: turn a passive viewer into an active player, no money, just for fun.
the architecture
Real time, cleanly distributed.
Static front served from the CDN, event-driven AWS backend, with two real-time mechanics. A shared clock, derived from a server anchor, makes every visitor see the same second of the match. And a WebSocket relays player presence and predictions live, without the server computing any score: each client derives the same leaderboard on its own, bit for bit, deterministic bots included. If the anchor doesn't respond, it gracefully falls back to a local replay: the site never breaks.
Event-sourced engine in pure TypeScript, seeded bots and a leaderboard derived bit for bit on the client, with no server-side scoring. Infra as SAM (IaC, eu-west-3), WebSocket in production. Next step: harden prediction validation server-side, then migrate to CDK.
V1 complete, live.
V1 runs on a fixed France vs Australia match, which decouples it from any sports API. It's all there already: shared clock, live player presence, and a multiplayer leaderboard where everyone sees the same result. Next: a real sports data source, player accounts and more badges. It's my playground to push real time and AWS in real conditions.