● live · 66d

FIFA Dashboard

World Cup lobby dashboard - live scores, transit, and weather on one screen

pythonreactredisdocker-swarm

repository

python 52.0%javascript 31.2%css 13.3%shell 2.7%dockerfile 0.8%

last commit 18d ago 0 commits 7d 38 30d 114 ytd

A wall dashboard built for the 2026 World Cup. The main panel shows live match scores with real-time updates sourced from a hybrid ESPN data overlay, including a stoppage-aware game clock that ticks locally in the browser and re-anchors on each server poll so drift never accumulates. A timeline bar beneath the scoreline marks the half-time and full-time positions with an open-ended stoppage zone for injury time.

The second panel is an LIRR transit tracker: per-station summary cards pair with a subway-style dot-and-line stop diagram that color-codes branches and renders departure countdowns in real time. A compact local weather radar strip rounds out the screen. All three panels update continuously without a page reload.

The architecture is deliberately thin on the client side. A server-side Redis updater polls LAN services - a FastAPI transit aggregator, a NEXRAD radar pipeline, and the ESPN overlay - and writes normalized JSON into Redis on a short interval. The React frontend is a pure read-through to that cache, which keeps browser logic simple and latency predictable even when individual upstream sources are slow.

Architecture

The dashboard runs as a set of Docker Swarm services behind Traefik. A Python redis_updater worker polls each data source on its own schedule and writes to Redis with a short TTL. The Next.js / React frontend fetches from a thin FastAPI gateway that reads Redis and shapes responses, never touching upstream APIs directly. A Playwright-driven smoke suite gates deploys by asserting that live score data appears within the expected refresh window.