FastAPI and Jinja2 application for a trusted World Cup 2026 data hub.
The project separates raw official data from derived or experimental layers so the UI and API do not present guesses as confirmed tournament facts.
data/world_cup_2026/ contains:
tournament.json: official tournament metadata and format.teams.json: 48 official group-stage teams.groups.json: official Group A-L membership.matches.json: 104-match catalog. Group/team membership is derived from official groups; unverified kickoff and venue fields remainnull.storylines.json: derived editorial context for richer app experiences.
Each trusted record carries:
data_tier:official,derived, orexperimentalcertainty:official,derived, orexperimentalsourcesource_urllast_verified_at
Optional .env values:
WORLD_CUP_DATA_DIR=./data/world_cup_2026
WORLD_CUP_YEAR=2026
DISPLAY_TZ_OFFSET=9
APP_TITLE=World Cup 2026 Hubpip install -r requirement.txt
uvicorn app.main:app --reloador:
python main.py/: tournament overview, official groups, and derived match catalog/teams/{team_id}: team detail/matches/{match_id}: match detail
GET /api/tournament/overviewGET /api/teamsGET /api/groupsGET /api/matchesGET /api/matches/{match_id}GET /api/storylinesGET /api/predictionsGET /api/analytics/group-strength
python -m pytest