
17-0 Showdown Online Browser Game
June 2026
What is it?
17-0 Showdown is a full-stack NFL fantasy draft game built entirely in the browser. You assemble a squad of 22 historical players — spanning every era from the 1970s through the 2020s — and simulate a complete 17-game NFL regular season. The simulation engine runs client-side using a seeded deterministic LCG (linear congruential generator), meaning every result is reproducible given the same seed. Player OVR ratings are derived from real historical stats: QB completion %, yards per attempt, and sack rate; RB yards per carry and breakaway run %; WR catch rate and yards per route run; DB coverage grade and sack total. Over 70,000 players have logged games since launch.
Why I built it
I wanted to build a polished, multiplayer-capable game could be built without a game engine — just React, a Postgres database, and a CDN. The popular 82-0 based around the NBA came out recently and I wanted to hop on the trend and create an NFL version. I also wanted to outperform big companies like Sleeper by having a larger player base and more features for the user to enjoy!
Key Features
Era Draft
Pick players from the 1970s through the 2020s — Brady, Rice, Dickerson, Lawrence Taylor, and hundreds more.
Blind Mode
Draft without seeing stats or OVR ratings. Pure football instinct — and a separate, harder leaderboard tier.
Season Simulation
Your squad plays a full 17-game NFL schedule, simulated in milliseconds with game-by-game box scores.
Daily Challenges
Hand-curated themed challenges with era restrictions, conference rules, and a scoring system that rewards creative constraint-satisfaction.
Online Multiplayer
Draft against a real opponent in real time. Both clients simulate the series independently from the same seed — no server-side sim required.
Global Leaderboard
Submit your season record and OVR. Filter by era, mode (Casual / Pro), blind vs. stats, and time period. Row-level security keeps data clean.
Under the Hood
The actual architecture decisions — not marketing copy.
Frontend
React 18 + Vite SPA on Vercel's edge network. Zero-config CDN caching; assets served from ~30ms globally.
Backend
Single Supabase project: PostgreSQL + PostgREST + Realtime.
Sim Engine
Runs entirely client-side in the main thread. A 17-game season completes in under 50ms on any device.
Deterministic simulation
The entire match is derived from a single integer seed. No server-side sim. No result sync. Both clients reach the same scoreline independently.
// Seeded LCG — same seed always produces the same game
function seededRng(seed) {
let s = seed;
return () => {
s = (s * 1664525 + 1013904223) & 0xffffffff;
return (s >>> 0) / 0xffffffff;
};
}
function simulateGame(homeTeam, awayTeam, seed) {
const rng = seededRng(seed);
// Each play call advances the RNG deterministically.
// Both clients run identical logic — no server-side
// simulation needed, no result sync over the wire.
}Matchmaking without race conditions
The try_claim_match RPC uses FOR UPDATE SKIP LOCKED — a PostgreSQL advisory lock that lets multiple clients search concurrently without stepping on each other. The first client to acquire the lock claims the match; all others skip and retry. No queue service, no distributed lock manager.
-- PostgreSQL advisory lock prevents race conditions.
-- Multiple clients search for open matches concurrently;
-- the first to acquire the lock claims it, others skip.
SELECT * FROM online_matches
WHERE status = 'waiting'
AND mode = p_mode
FOR UPDATE SKIP LOCKED
LIMIT 1;Real-time with Supabase
Supabase Realtime streams Postgres change events over WebSocket. When player 1 finalises picks, the match row updates and player 2's subscription fires instantly. Row-level security policies ensure each client can only read rows it owns or participates in. A REST poll fallback (every 8 s) catches missed WebSocket events on flaky connections — the online game never gets stuck.
Tech Stack
Play it live
Can you go 17-0?
Play 17-0 Showdown