← All work

Stats.Fan

Settle the debate — compare legends, build lineups, and play trivia across MLB, NBA & NFL.

Web Data Full-Stack Visualization
View live project →
50,000+ Players
125 Years of history
Full-Stack Sole builder
Production Deployed

/01 Context

Sports are full of numbers — records, leaders, milestones, and the endless "what if" comparisons that fuel every barstool argument. But too often, stats feel locked in spreadsheets or buried in databases. Stats.Fan exists to change that: a home for fans who love the numbers and want to win the argument with evidence, not hot takes.

The product covers baseball, basketball, and football — MLB, NBA, and NFL — with 50,000+ player profiles spanning 125 years of history. Whether you're settling Ruth vs. Bonds, Jordan vs. LeBron, or Brady vs. Montana, Stats.Fan turns opinions into side-by-side comparisons backed by real career data.

I built Stats.Fan for the fan who already knows the debate but needs the numbers fast — searchable, visual, and interactive. Compare legends, dig into career arcs, build all-time lineups, play daily trivia, and vote in community debates. I founded and engineered the entire platform: data pipeline, backend API, frontend experience, and production deployment.

/02 The Build

Data Engineering

Large-scale ingestion of 50,000+ player profiles across MLB, NBA, and NFL — 125 years of baseball history plus full league coverage for basketball and football. Built ETL pipelines for extraction, normalization, and loading into MongoDB.

Reverse-engineered source URL structures, implemented retry logic, and designed incremental upsert operations so the data lake stays current across all three leagues. MongoDB aggregation pipelines power complex stat queries — career totals, season-by-season arcs, advanced metrics, and custom filters.

Compare & Explore

Head-to-head player comparisons are the core experience — put two legends side-by-side with career totals, peak seasons, and interactive ECharts visualizations that reveal what the box score misses. Watch careers unfold season by season: hot streaks, decline phases, comeback stories.

Each league gets its own stats hub — browse all-time greats, career leaderboards, franchise histories, and roster breakdowns. The stat explorer lets fans build custom queries: lefty sluggers, 50-point nights, 4,000-yard seasons, the unicorns. Search any player from dead-ball icons to today's stars.

MLB player comparison — Bonds vs Aaron with interactive career charts
MLB player comparison — Bonds vs Aaron with interactive career charts
NBA stats hub — browse all-time greats, leaders, and league dashboards
NBA stats hub — browse all-time greats, leaders, and league dashboards

Trivia, Lineups & Community

Trivia Arcade runs daily, quick-play, and custom modes across all three sports — finish a perfect board and earn a collectible Stats.Fan card. The lineup builder lets fans fill out all-time rosters on the same field layouts used in the app — NBA, MLB, and NFL — then share the squad.

Community debates turn sports takes into structured arguments: build a challenge, put it to a vote, and let the record keep score. Search, compare, visualize, and query — then take the numbers into lineups, debates, and trivia. SSO and Google login power authenticated features like saved collections and dashboards.

Trivia Arcade — daily multi-sport trivia across MLB, NBA, and NFL
Trivia Arcade — daily multi-sport trivia across MLB, NBA, and NFL

Infrastructure

Deployed to production on DigitalOcean with nginx reverse proxy, PM2 process management, Cloudflare CDN, and environment-specific configuration. CLI deployment scripts and monitoring tooling for ongoing operations.

/03 Under the Hood

Microservices separation: React SPA frontend and Express backend with RESTful APIs scoped per league — MLB, NBA, and NFL each get dedicated player search, compare, teams, all-time greats, stat explorer, trivia, and lineup routes.

Modular scraper architecture with orchestration tooling keeps the data lake fresh across refresh cycles. ECharts powers interactive career charts and dashboard visualizations. SEO-optimized page catalog with league-specific metadata, canonical URLs, and structured data for discoverability.

React TypeScript Node.js Express MongoDB ECharts nginx PM2 Cloudflare DigitalOcean

/04 Outcomes

Stats.Fan is live at stats.fan — a production multi-sport platform with 50,000+ players, interactive dashboards, head-to-head comparisons, stat explorer, trivia arcade, lineup builder, and community debates across baseball, basketball, and football.

Every major product surface shipped: league hubs for MLB, NBA, and NFL; player profiles with career charts; side-by-side compare flows; custom stat queries; daily trivia with shareable cards; all-time lineup builder; and community voting on debates. SEO optimized with league-specific landing pages and ongoing performance improvements.

A complete founder build — from ingesting decades of multi-sport data to shipping a platform fans use to settle the debate. Because whether it's baseball, basketball, or football, it's not just about the numbers — it's about the stories the numbers tell.

"Compare legends, build lineups, play daily trivia — backed by real MLB, NBA, and NFL stats, not hot takes."

James Carvallyo / Founder