← Back to Projects
AI-Built

World Cup 2026 — Live Score & Pick'em Platform

Full-stack web app for following the 2026 FIFA World Cup with live scores, match watchability ratings, multi-user pick'em contests, and real-time news aggregation.

ReactNode.jsReal-timeSports

World Cup 2026 — Live Score & Pick’em Platform

Built with AI-assisted development using Claude Code · Live at score2026.dev

Overview

A full-stack web platform for following the 2026 FIFA World Cup. It combines live match data, a watchability rating algorithm, a competitive pick’em game, and aggregated news — all updating in real time without full page refreshes.

Deployed on Railway at score2026.dev.


Tech Stack

  • Frontend: React 18, Vite, Tailwind CSS 4, TypeScript
  • Backend: Express.js, Node.js 20+
  • Real-time: Server-Sent Events (SSE) — live updates stream to clients without polling
  • Data Sources: ESPN API (live scores), The Odds API (bookmaker odds), RSS feeds (news)
  • Deployment: Railway with persistent volumes for pick’em data

Key Features

🌟 Match Watch Ratings

An algorithm scores every match 1–5 stars to help decide which games are worth watching. Factors: odds closeness (25%), stage stakes (20%), team quality (15%), expert hype (15%), expected goals (10%), rivalry (10%), plus big-match bonuses. Adjusts for local timezone and sleep penalty.

📊 Live Scores & Bracket

Real-time score updates from ESPN (every 1–2 minutes). Includes live minute/stoppage time display, group stage standings, and a knockout bracket that resolves dynamically as teams advance — no manual updates needed.

🎯 Pick’em Game

Multi-user competitive predictions league with a leaderboard. Picks lock 10 minutes before kickoff. Scoring: 3 points for exact score, 1 point for correct winner/draw. User data stored per-user with SHA256-hashed PIN authentication.

📰 News Feed

RSS aggregator from major sports outlets with two-tier filtering — FIFA signals first, then team name and context. Hard blocklist prevents cricket/rugby/F1 false positives. Displays relative timestamps.

📈 Odds & Analytics

Real bookmaker odds refreshed every 3 hours, with FIFA rankings as fallback. Advanced analytics dashboard with expected goals and team comparisons.


Technical Highlights

Dynamic Knockout Resolver — All 32 knockout matches start as "TBD". A resolver computes group standings on every request and dynamically maps slot references (1A, 2B, W73) to actual qualified teams without mutating any files.

ESPN Naming Normalization — Handles quirks like “Türkiye” (not “Turkey”), “Bosnia-Herzegovina” (with hyphen), “Congo DR” (not “DR Congo”) that silently break live score matching if missed.

Timezone-Aware Display — All times respect the user’s timezone (defaults to Asia/Jerusalem), with sleep penalty adjustments to watch ratings based on local kickoff time.