world-2026-hub/.agents/TODO.md

3 KiB
Raw Blame History

TODO — World Cup 2026 Hub

Checklist of what needs to be done. Organized by build step (approved plan, one approval gate per step).

Use checkboxes to track progress. Items marked 🔴 BLOCKER prevent release; 🟡 IMPORTANT must be done but don't block; 🟢 OPTIONAL can be deferred.


1. Foundation

🔴 BLOCKER

  • Step 0 — Project memory: .agents/ + auto-memory pointer + git init
  • ~Step 1 — File structure + mock data (48 teams, 12 groups, 104 matches UTC, 30 stadiums, bracket-config.json with null third-place slots, mixed results)
  • Step 2 — Base layout: SPA shell, header + nav, hero (next match + countdown), dashboard cards, style.css palette, app.js loadData/routing, storage.js, i18n.js (EN/PT toggle)

2. Core views

🔴 BLOCKER

  • Step 3 — Match schedule: list, filters (date/group/phase/team/stadium), search, sort
  • Step 4 — Group standings computed from results (3/1/0, GD, GF)
  • Step 5 — Stadiums page (cards + matches held)
  • Step 6 — Match detail modal (result, penalties, future-stats placeholder, ARIA)

3. Bracket

🔴 BLOCKER

  • Step 7 — Static bracket: R32 from config, sequential pairing to FINAL, placeholders, resolveBracketTeams()
  • Step 8 — Interactions: hover path highlight, animations, wheel/pinch zoom, drag/pan
  • Step 9 — Simulation mode: pick winner + score, propagate rounds, wc2026_simulation, reset

4. Polish & docs

🔴 BLOCKER

  • Step 10 — Responsiveness (≤767 / 7681439 / 1440+), accessibility (ARIA, keyboard, focus, contrast), entry animations

🟡 IMPORTANT

  • Step 11 — README (deploy guide, JSON maintenance, bracket-config.json how-to) + spec §18 acceptance checklist (done after step 12, at user request)

5. Extra features (complement spec §610)

🟡 IMPORTANT

  • Step 12a — Favorites + "My Matches" filter (toggleFavorite, getFavoriteMatches, highlights)
  • Step 12b — Timezone toggle "Local / Stadium time" (wc2026_prefs.timeMode)
  • Step 12c — .ics export (calendar.js, CRLF, UTC, 2h duration)

🟢 OPTIONAL

  • Step 12d — Bracket challenge score card (calculateChallengeScore)
  • Step 12e — Share/import prediction via ?prediction= base64 link

6. Post-launch (real data)

🟡 IMPORTANT

  • Replace mock data/*.json with real World Cup 2026 data
  • Fill thirdPlaceAssignment in bracket-config.json after group stage
  • Real stadium photos + team flag SVGs in assets/images/

Quick final checklist

[x] All 104 matches load from JSON
[x] Standings + bracket fully derived from results.json
[x] Simulation works and survives reload (localStorage)
[x] GitHub Pages ready (all paths relative — verified; actual deploy pending)
[x] Mobile: bracket scroll + zoom + drag
[x] JS < 300KB (74 KB measured)   [ ] Lighthouse > 90 (run after deploy)
[x] EN/PT toggle covers every UI string