# 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 - [x] ~~Step 0 โ€” Project memory: `.agents/` + auto-memory pointer + `git init`~~ - [x] ~~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)~~ - [x] ~~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 - [x] ~~Step 3 โ€” Match schedule: list, filters (date/group/phase/team/stadium), search, sort~~ - [x] ~~Step 4 โ€” Group standings computed from results (3/1/0, GD, GF)~~ - [x] ~~Step 5 โ€” Stadiums page (cards + matches held)~~ - [x] ~~Step 6 โ€” Match detail modal (result, penalties, future-stats placeholder, ARIA)~~ --- ## 3. Bracket ### ๐Ÿ”ด BLOCKER - [x] ~~Step 7 โ€” Static bracket: R32 from config, sequential pairing to FINAL, placeholders, `resolveBracketTeams()`~~ - [x] ~~Step 8 โ€” Interactions: hover path highlight, animations, wheel/pinch zoom, drag/pan~~ - [x] ~~Step 9 โ€” Simulation mode: pick winner + score, propagate rounds, `wc2026_simulation`, reset~~ --- ## 4. Polish & docs ### ๐Ÿ”ด BLOCKER - [x] ~~Step 10 โ€” Responsiveness (โ‰ค767 / 768โ€“1439 / 1440+), accessibility (ARIA, keyboard, focus, contrast), entry animations~~ ### ๐ŸŸก IMPORTANT - [x] ~~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 ยง6โ€“10) ### ๐ŸŸก IMPORTANT - [x] ~~Step 12a โ€” Favorites + "My Matches" filter (`toggleFavorite`, `getFavoriteMatches`, highlights)~~ - [x] ~~Step 12b โ€” Timezone toggle "Local / Stadium time" (`wc2026_prefs.timeMode`)~~ - [x] ~~Step 12c โ€” `.ics` export (`calendar.js`, CRLF, UTC, 2h duration)~~ ### ๐ŸŸข OPTIONAL - [x] ~~Step 12d โ€” Bracket challenge score card (`calculateChallengeScore`)~~ - [x] ~~Step 12e โ€” Share/import prediction via `?prediction=` base64 link~~ --- ## 6. Post-launch (real data) ### ๐ŸŸก IMPORTANT - [x] ~~Replace mock `data/*.json` with real World Cup 2026 data~~ (2026-06-12 โ€” full migration + smoke test; see project-memory) - [ ] Fill `thirdPlaceAssignment` in `bracket-config.json` after group stage ends (~2026-06-27; slot โ†’ allowed-groups table in project-memory) - [ ] Update `results.json` as the tournament progresses (results updated through match id 7 on 2026-06-14) - [ ] Real stadium photos + team flag SVGs in `assets/images/` (10 new-team flags created 2026-06-12 in placeholder style) --- ## 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 ```