Anirudh GoelAI automation engineer
Say hi

Fan Park

48 nations, 104 matches. A World Cup dashboard in your colours, live by matchday two.

Industry
Football
Year
2026
Role
Design and build (personal project)
Built with
Cloudflare Workers
Step two on a laptop after picking Mexico: the flag floods the stage in green, white and red behind MEXICO and El Tri, a third home World Cup, over 48 flag tiles grouped A to L and Enter the Fan Park.
The dashboard on a phone: the green Fan Park header and the Dispatch ticker, then the mast with Good morning, Anirudh, passport number 867, the group position, points, played and form, and Download Passport.

I don’t follow football. I wanted to build the thing a fan would keep open at 3am during a World Cup, and make it feel like broadcast, not a spreadsheet. Fan Park is a personal FIFA World Cup 2026 dashboard. Through the tournament it carried live scores in IST, all 12 group tables, the full 104-match schedule, a projected knockout bracket, the Golden Boot, hand-written storylines, and a shareable Fan Passport. It went live on 12 June 2026, day two of the tournament.

Fan Park, in numbers.

A whole World Cup, one page

  1. Nations, each with its own flag and kit colours48
  2. Matches on the schedule, in IST104
  3. Group tables, computed in the browser12

Head-to-head now comes before goal difference, unit-tested against a case where the old and new orders disagree.

12 June2026, live on day two of the tournament
60 sedge cache on the live feed, with zero KV writes on the hot path
No accountno email; your name and nation never leave your browser
11 versionsin one day gave it its own identity, The Wallchart, while the site stayed live
Every 4 hoursa cron re-baked results into the fixtures file and redeployed

The brief

Pick your nation and the page floods in its colours. Standings are computed in the browser from fixture results on FIFA’s 2026 tiebreak order, so there is no standings scrape to break. During the tournament a self-contained Cloudflare Worker proxied the live feed behind a 60-second edge cache with zero KV writes on the hot path, and a four-hourly cron re-baked results into the fixtures file. Vanilla HTML, CSS and ES modules, no build step.

The first skin was a copy of The Pavilion. A day after launch it got its own identity, The Wallchart, over eleven same-day versions while the site stayed live: the tunnel onboarding, the Road to the Final, goal toasts, and a scenario engine that brute-forces every remaining group result. The detail is in the screens below.

From the tunnel to the dashboard.

Onboarding is the tunnel. Step one prints your name on a shirt.

Two steps, one focal point each.

Your name goes on a squad jersey with a number, the way a kit printer does it: short names print big, long names shrink to fit, nothing spills off the shirt. No account, no email. Your name and nation never leave your browser.

Step two on a phone after picking Mexico: the green, white and red flag fills the stage behind MEXICO, El Tri, a third home World Cup, Azteca roars, over the bench of flags grouped A to F.

Pick a nation and the flag drops across the whole viewport like a tifo.

Forty-eight tiles grouped A to L, each a real flag.

Choosing one unfurls that flag as a clip-path banner and floods the dashboard in the kit colours, with the text colour computed from luminance so Argentina’s sky blue reads as clearly as Germany’s black. Switch Nation opens with your team already on the stage.

A dashboard that reads like a matchday programme, in your colours.

The Wallchart identity: chalk-poster paper with a 3% mowing-stripe texture, pitch-green chrome, ink scoreboard plates, solid offset print shadows, hard corners, and two typefaces, Archivo and Chivo Mono. Its ancestry is Lance Wyman’s Mexico 68 geometry, pitch chalk lines and stadium scoreboards. Built over eleven same-day versions after launch, without the site going down.

Screens

Your name chalked on grass, your passport number on the plate.

The masthead carries the greeting, the nation’s dispatch line, group position, points, played and form, plus Download Passport and Switch Nation. The ticker underneath runs like the LED perimeter board. Everything on it comes from the same fixtures file the tables are computed from, so nothing on the mast can disagree with the table below it.

The dashboard on a laptop: the green header and the Dispatch ticker, then the mast in pitch green with Good morning, ANIRUDH, the dispatch line, Marching with El Tri, and the black passport plate with number 867, the group position, points, played and form over Download Passport and Switch Nation.

All twelve group tables, computed in the browser, on the real 2026 tiebreak order.

No standings scrape. The tables are computed from fixture results plus the live merge, so there is nothing to break when a source page changes. FIFA reordered the tiebreakers for 2026, head-to-head now before goal difference, so the sort was rewritten and unit-tested against a case where the old and new orders disagree. Qualification chips stay conservative until the maths is certain.

The Groups on the dashboard: all twelve tables, three across, Group A pinned first with Mexico on top, each row with played, won, drawn, lost, goal difference and points, and a green THROUGH chip on every side that qualified.

The Road to the Final, drawn as a passing move across a chalk pitch.

Two findings made it possible: the feed’s knockout placeholders carry ordinal names, so a nation’s whole path is traceable, and the live feed carries per-goal detail the app had been discarding. The Road draws every stop from the group games to the final; during the tournament it pencilled in likely opponents from that night’s tables and answered the pub question, who do we get, with both possible flags.

The Road to the Final on the dashboard: Mexico's path drawn as a passing move across a chalk pitch, stops at South Africa, Korea, Czechia, Ecuador and England with their scores, the later rounds marked TBD, and Share Your Road.

Mexico's road at the quarter-final

The full bracket, projected until the field locked, then real.

Rendered from the real Round-of-32 pairing template, filled with projected qualifiers from the live tables until the draw locked on 28 June, every projected entrant visibly ghosted. Once results came in, the same tree carried the scores from the round of 32 to the final.

The Full Bracket on the dashboard, its top half: the round of 32, the round of 16, the quarterfinals and semifinals, with Mexico's games outlined, and the final, Spain against Argentina, with every score filled in.

The bracket after the final, every round with its real score

The Golden Boot, with the leader wearing the actual boot.

Scraped from Wikipedia’s goalscorers section through a Cloudflare Worker, cached in KV for 30 minutes with stale-on-error. Flags on every scorer, a gold glyph on the race leader. One of two API routes; the other proxied the live scoreboard behind a 60-second edge cache with zero KV writes on the hot path.

The Golden Boot on a phone: the top ten scorers with their flags, Kylian Mbappé first on a gold row with the boot glyph, then Lionel Messi, Jude Bellingham and Erling Haaland.

The schedule, filtered to your nation, in IST.

All 104 matches, with a toggle between your team and everything. Upcoming fixtures said Tonight 21:30 instead of asking you to do timezone maths; finished ones show the result with the loser dimmed. A four-hourly GitHub Actions cron re-baked results into the fixtures file and redeployed, so first paint was always fresh even before the live merge ran.

The schedule on a laptop with My Nation on: Mexico's five matches in a column, each with its date, the opponent's flag, the group or round, the venue and the final score.

My Nation, after the tournament: every fixture with its result

Fan Park Intel: storylines written by hand, not scraped.

Six short pieces per nation, checked against the record before they went in: the Azteca hosting a third World Cup, Ochoa at 40, Ronaldo at 41, the 48-team format explained, IST alarm times for the group games. The feeds carry the numbers; the intel carries the reasons to care.

Fan Park Intel on a phone: storyline cards for Mexico, The Azteca did its thing, The last dance, for real this time, and Ronaldo at 41, each a short paragraph stamped Fan Park Intel.

The Fan Passport

A 1080 by 1920 canvas poster: your name, serial, photo, flag plate and nation colours on pitch texture, rendered in the browser from the same data as the page, so it never goes stale. Two more posters share the engine, the Wallchart with all twelve tables auto-filled, and Share your Road. It is the same plumbing that carried The Pavilion across Instagram during the IPL.

The Fan Passport on a phone: Your Fan Passport over the 9:16 preview, ANIRUDH, the AA badge, El Tri, the Mexico flag plate and 48 nations, one summer, then Add Your Photo, Download and Copy Shareable Link.
The Wallchart banner on the dashboard: The signature artifact, THE WALLCHART, all 12 groups, the road to the final and the Golden Boot on one poster, and Download the Wallchart.

The Wallchart, the second poster on the same engine, offered on the dashboard

Have a build in mind? Say hi.