Skip to content

Quiniela G — En Bendiciones

Snapshot · Jul 27, 2026
  1. Cefi

    Ernesto Vogeler

    845 pts
  2. Yorch FC

    Jorde Mosquera

    818 pts
  3. Arabian FC

    Francisco Perfetti

    811 pts
  4. Athletic Tucacas

    Francisco Esteller

    791 pts
  5. Chiripiorka FC

    Gian Cannata

    785 pts

+78 more teams · 74 players total

Entry 01

Prode FIFA 2026

A World Cup prediction pool, played by 74 real people, start to finish.

A quiniela (prediction pool) web app for the FIFA 2026 World Cup (USA · Canada · Mexico), run in production for real private leagues of friends and family for the entire tournament. Every player predicts match results, group standings, the knockout bracket, and 4 individual awards; a per-league configurable scoring engine calculates a live leaderboard.

Who used it

74 real players, 83 teams, in private leagues that ran live for the whole 2026 World Cup — not a demo, not seed data.

The problem

A World Cup quiniela lives or dies on the detail: 12 groups with tiebreaks FIFA itself sometimes can't resolve by computable criteria, third-place finishers seeded by an official algorithm, and a knockout bracket that depends on what each player predicted rather than a fixed tree. Prode FIFA 2026 answers that for real private leagues — 3 roles, any number of independent leagues with their own scoring, and an engine that recalculates the entire standings table every time an official result is loaded.

Built with

Next.js 16PostgreSQLPrisma 7NextAuth v5Multi-tenantnext-intl

What went into this

  • A knockout-bracket resolution engine that builds the full bracket (Round of 32 → Final) from each player's own predictions — no fixed teams, and the official FIFA Annex C algorithm for seeding the best third-place finishers
  • Group tiebreaks that follow the real FIFA rules — points, head-to-head goal difference, head-to-head goals for, overall goal difference, overall goals for — with manual player input only when even those criteria can't resolve it
  • A per-league configurable scoring engine, optimized to load the World Cup's shared context once per recalculation instead of once per team, avoiding an N+1 blowup in large leagues
  • Local-first predictions-in-progress, saved to localStorage and only persisted to the database on submit — the same architecture that later made a read-only demo possible without touching any real business logic
  • 397 Vitest tests over the actual business logic: the scoring engine, bracket resolution, FIFA tiebreaks, and server actions

How it fits together

Predictions-in-progress live in localStorage and only sync to the database on submit — freely editable without hitting the database on every keystroke, and the piece that made it possible to later build a read-only demo without touching any real business logic. The scoring engine loads the World Cup's shared context once per recalculation rather than once per team, avoiding an N+1 blowup in large leagues; and the knockout bracket has no fixed teams — each player sees their own bracket, resolved from what they themselves predicted, including the official FIFA algorithm for seeding third-place finishers.

A guided, 15-step tour, 100% read-only against the real production database — nothing you enter is ever saved.

How it works