mirror of
https://github.com/LucasKalil-Programador/world-2026-hub.git
synced 2026-07-04 17:41:28 -03:00
6.7 KiB
6.7 KiB
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.jsonwith null third-place slots, mixed results) Step 2 — Base layout: SPA shell, header + nav, hero (next match + countdown), dashboard cards,style.csspalette,app.jsloadData/routing,storage.js,i18n.js(EN/PT toggle)
2. Core views
🔴 BLOCKER
Step 3 — Match schedule: list, filters (date/group/phase/team/stadium), search, sortStep 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/panStep 9 — Simulation mode: pick winner + score, propagate rounds,wc2026_simulation, reset
4. Polish & docs
🔴 BLOCKER
Step 10 — Responsiveness (≤767 / 768–1439 / 1440+), accessibility (ARIA, keyboard, focus, contrast), entry animations
🟡 IMPORTANT
Step 11 — README (deploy guide, JSON maintenance,(done after step 12, at user request)bracket-config.jsonhow-to) + spec §18 acceptance checklist
5. Extra features (complement spec §6–10)
🟡 IMPORTANT
Step 12a — Favorites + "My Matches" filter (toggleFavorite,getFavoriteMatches, highlights)Step 12b — Timezone toggle "Local / Stadium time" (wc2026_prefs.timeMode)Step 12c —.icsexport (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(2026-06-12 — full migration + smoke test; see project-memory)data/*.jsonwith real World Cup 2026 data- Fill
thirdPlaceAssignmentinbracket-config.jsonafter group stage ends (~2026-06-27; slot → allowed-groups table in project-memory) - Update
results.jsonas the tournament progresses (results updated through match id 26 on 2026-06-18) Real stadium photos + team flag SVGs in(flag SVGs added 2026-06-18; stadium photos optional)assets/images/- Pós-Copa: estado final da home. Quando a Final encerrar, o hero fica vazio (por design atual). Criar um estado pós-torneio (campeão/epílogo) na home — ver entrada "Hero cronômetro inteligente (2026-06-15)" em project-memory; provavelmente converge com a aba Stats (
stats-screen-plan.md).
🟢 OPTIONAL
PWA Tier 1 — instalável (manifest + ícones + meta tags; 2026-06-16). Atende todos os critérios de aceitação da issue.- PWA Tier 2 — service worker + offline (deferido; ver
.agents/issues.md→ "PWA Tier 2". DEVE excluirdata/*.jsondo cache p/ não quebrar o live-refresh).
7. Stats final screen — feature/stats-final-screen
Build of .agents/stats-screen-plan.md, stage by stage with an approval gate each. The pure-UI
build (A–F, minus skipped E) + a release polish (J round 1) was merged to master on 2026-06-17
and is live. The screen renders fully with today's data and auto-lights the post-Cup sections (verdict,
champion path, debuts champion) once the final lands. The data-layer stages (G/H/I) + a second polish
(J round 2) remain for when their data arrives near/after the Cup.
✅ Shipped to master (2026-06-17)
Stage 0 — branchfeature/stats-final-screenoffmasterStage A — degradation engine + fault-tolerantloadData+ sticky scrollspy sub-nav + media fallbackStage B — verdict hero (gated on FINAL finished; aggregate-hero fallback) + goals-by-round chartStage C — final ranking 1–48 (phase-reached chain), favorite-row highlight, team record cardsStage D — auto record-cards + "format-48 debuts" bandStage E — in-tab results archive— SKIPPED (Option B): kept the "See all matches → Matches" link; the Matches tab already covers browsing.Stage F — team comparator (diverging bars)— teams only; the Teams/Players toggle is deferred to Stage H per graceful degradation.Stage J (round 1, release polish) — a11y/responsive/i18n/README audit on A–F— passed clean (no code fixes). Lighthouse still pending an actual deploy (the once-planned finalDATA_VERSIONbump is moot —DATA_VERSIONremoved 2026-06-18).
🔭 Future (data layers + 2nd polish — near/after the Cup)
- Stage G — Layer 2 cheap data. Extend
results.json(attendance,cards→{y,r} migration — breaking formodal.js+stats.jsaggregateTeams, add a backward-compatible reader;decidedIn; backfillstats),teams.json(ranking/wcDebut/confederation),stadiums.json(lat/lng). Light up records: attendance, discipline/fair-play, ranking upsets, confederation performance, distance. SCHEDULE LATE — conflicts with master's dailyresults.jsonrefreshes. - Stage H — Layer 3 players.
players.json+player-events.json+awards.json(+ optionalkeeper-stats.json). Top-scorers podium, assists/cards/saves chips, awards block, Squad of the Tournament, Teams/Players toggle in the comparator (the deferred half of Stage F), goal-time records. Relative photo paths (gotcha #7). - Stage I — Layer 4 editorial.
curiosities.json(bilingual EN+PT) +all-time-baselines.json; editorial record-cards + "this Cup vs history" panel. - Stage J (round 2) — polish over the NEW G/H/I features. Repeat the audit on the added sections (a11y/responsive/perf, Lighthouse, EN/PT review) + README refresh.
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