The Picks Project: Building an NFL Pick'em Platform from Scratch
How I built a full-stack NFL pick'em platform from scratch to learn the modern JavaScript stack — my first project delivered 100% solo, now at 150+ users.
About a year into my role at Under Armour, I realized I was working with a stack I didn't have deep hands-on experience with — Next.js, Vercel, Supabase, the modern full-stack JavaScript ecosystem. I was learning on the job, but I wanted a space where I could experiment without the restrictions of a large enterprise codebase.
I was already running fantasy football leagues with friends and coworkers, and I thought: what if I built an optional weekly pick'em alongside it? Something people could opt into, low stakes, but a real product with real users. It would give me a reason to go deep on the tools I was using at work, but on my own terms.
That's how The Picks Project was born.
The idea was simple: an automated NFL pick'em platform where users can sign up, join or create groups, make their weekly picks, and track how they stack up. What started as a tool for a small group of football fans has grown into a platform with over 150 registered users, 30-40 active pickers each week, and several groups running their own pools with custom rules.
At its core, the app pulls NFL schedule and game data by scraping the ESPN API via a cron job that runs automatically each week on Vercel. That data gets stored in Supabase, which gives me historical records I've used to build out season history views — something I added mostly for fun, but users genuinely enjoy browsing.
Groups are a big part of the experience. Pool owners can create private pools, invite others, and configure custom scoring — weighting wins, penalizing wrong picks, or adding tiebreakers. I also set up Slack notifications for automation events so I can monitor cron jobs without babysitting the app.
Each season I've iterated based on real feedback from real users. The UI has changed dramatically since the early days. This past year I shipped custom pool scoring, improved group management, and set up a GitHub Actions-powered changelog that auto-generates release notes as part of my CI/CD pipeline. Not perfect yet, but it reflects how I try to build: shipping, learning, and improving continuously.
I've also focused on SEO and making the platform feel like a real product, not just a side project. That shift in mindset — from "thing I built" to "thing people use" — has been one of the most valuable parts of the process.
The whole thing is built on Next.js, Tailwind CSS, and Supabase, structured as a monorepo and deployed on Vercel. Cron jobs handle the automated data pipeline, Supabase handles auth and the database, and the whole thing runs without me needing to touch it week to week during the season.
You can check it out and make some picks at thepicksproject.com.