Fantasy Football Classic
Fantasy Football Classic™ reimagines season-long fantasy: draft, weekly lineups, waivers, and playoffs, with every starter’s weekly score determined from a randomly selected real historical NFL game. Relive eras of Marshall Faulk, Randy Moss, Peyton Manning, and more, without bye-week headaches or rooting against your favorite team.

Why I built it
A season-long fantasy football platform where each starter’s weekly score comes from a randomly selected real historical NFL game, not a live projection. It runs a full league (drafts, weekly head-to-head matchups, waivers, and playoffs) so the social ritual of fantasy stays intact while removing injuries, bye weeks, and rooting against your own team.
Problem it solves
Traditional season-long fantasy comes with injuries, bye weeks, and the awkward conflict of rooting for fantasy players against your favorite NFL team. Most “classic” or nostalgia formats also collapse into one-off sims or daily contests, not a full league season.
Research
The nostalgia format only works if the scoring feels fair and legible. Early exploration focused on how to assign each starter a historical game so outcomes feel earned, not random, and on eligibility rules (players need enough historical track record) so managers draft from genuinely proven performers.
Solution
A full season-long product (14 regular weeks + playoffs weeks 15–17) where each starter is assigned a real historical game for that week number, only from seasons when that player actually played (1999–2025). Scores reveal at kickoff. Public leagues are free; private leagues are invite-only with a one-time commissioner platform fee.
Architecture
Full-stack fantasy sports platform: React frontend and FastAPI backend, real-time WebSocket drafts, PostgreSQL for league state, Stripe for payments, and Resend for email. API and database on Railway; frontend on Cloudflare Pages with GitHub CI/CD. Auth uses JWT in HTTP-only cookies; scheduled jobs via APScheduler. Historical scoring is driven by nflverse-backed player/game data assigned per starter at lineup lock.
Screenshots

Challenges
- Designing a historical-game assignment that is random enough to be exciting but transparent enough to feel fair.
- Coordinating live draft rooms over WebSockets with reconnect handling.
- Encoding waiver claim windows for first come, first served (FCFS) and free-agent budget bidding (FAAB) on a fixed Eastern-time league calendar.
Lessons learned
- The differentiator is a full season loop with historical scoring, not a one-game simulation.
- Rules for how games are rolled, revealed, and locked have to be crystal clear or the format feels arbitrary.
- Free public entry plus a simple commissioner fee keeps the barrier low while funding the platform.
Future improvements
- Deeper historical player analytics to support draft prep.
- Commissioner customization for scoring and roster rules.
- Mobile-first lineup management and notifications.
How it’s offered
Public leagues: free to join (Quick Join or browse). Private leagues: commissioner pays a one-time platform fee ($40 inaugural season, currently 50% off); members join free. Any league dues between friends stay outside the platform. Stripe payments cover fantasyfootballclassic.com services only, not prize pools.