A dedicated page for the 2026 FIFA World Cup, on its own subdomain and repository. It brings together the full 104-match schedule with Portugal mainland kick-off times and broadcasters, group standings, top scorers and the knockout bracket — with light and dark themes.
football-data.org (API)
│
▼
mundial:sync ── every 30 min during the match window (Lisbon time)
│
▼
live.json ── persistent volume (survives every deploy)
│
▼
Static page ── fetch (no-store), merges results into the calendar
The page is a single static file, with no client framework; the only dynamic part is a small JSON that a scheduled command pulls from football-data.org and writes to a persistent volume. Finished matches start showing the score and the tables refresh on their own, with no intervention.
It was extracted from the main site into a standalone, lean application:
Own repo (private) ──▶ push to main
│ (webhook + HMAC)
▼
Coolify ── Docker build (one image: php-fpm + nginx + scheduler)
│
▼
mundial2026.nelsonbrilhante.com ── automatic SSL, no database
A Laravel app with no database (file cache), served by nginx with the scheduler running the sync; automatic deploy on every push and automatic SSL. Kept out of search engines by choice.
Designed, built and running in production at mundial2026.nelsonbrilhante.com.