Skip to content
Builds

Designed, built, and shipped by me.

All built on the side, on nights and weekends.
Real users, real deadlines. Every one is open to click through.

Why it matters for a marketing team: the same skills built my AI reporting, seller digests, and landing pages at work. I can prototype the tool instead of waiting on a ticket.

  • Next.js
  • Vercel
  • Firebase
  • Resend
  • Claude Code
Flagship · EcosystemLive

The Sports Federation

A private, invite-only league. Est. 2015.
Now in season 12, with 171 members, running on a platform I built solo.

A recruiting site brings members in.
A member hub signs them in once.
Each sport gets its own event app.

The Federation home page
How it fits together
  1. The front door
    Public site. Explains the league and takes waitlist sign-ups.
  2. The member hub
    One account and one sign-in for the whole season.
  3. The event apps
    A separate app for each event. Picks, standings, schedules, and analysis.
    • College Football · live
    • MLB · live
    • NFL · live
    • Golf Majors
    • World Cup
    • March Madness Survivor
    • NBA and NHL Playoffs
    • Bowl Pick'em
  4. The shared backbone
    Every app reads the same members and runs on the same stack.
    • One member database
    • Single sign-on
    • Master Standings across 10 events
    • Email and text alerts
    • Live MLB, ESPN, and college football data
    • Shared design system
    • Next.js, TypeScript, Tailwind
    • Vercel and Firebase
The hard part

Making separately built apps feel like one product.
One member database, one login, and a simple contract: each event app reports a rank, and the hub turns ranks into season points.
New events plug in without touching the rest.

Fed Golf Majors leaderboard
Golf Majors: live leaderboard, 151 entrants, auto-refreshing scores.
Fed World Cup pick builder
World Cup: a 100-credit pick builder with live multipliers.
  • 12
    seasons, est. 2015
  • 10
    events across twelve months
  • 171
    active members

Individual apps

Fantasy Big Brother standings

Fantasy Big Brother: Time Trip

Live

My wife got me hooked on Big Brother.
A fantasy league with another couple followed.
It ran on emails and Google Sheets. Now it runs here.

What it does: drafting, scoring, and live standings.
All for bragging rights.

Next.js · Vercel · JSON-driven
Open app(opens in a new tab)
Draft Room home page

Draft Room

Live

Set the date. Pick your spot.
A league votes on draft night, then managers choose draft positions in turn.
Everyone gets a text when they are on the clock.

What it does: ends the group-text scramble.
Sign-in by text code, no passwords.

Next.js · Vercel · SMS
Open app(opens in a new tab)
Sam's POV restaurant map

Sam's POV Map

In progress

Sam (@samspov1) shows 1.3M Instagram followers the DFW restaurants that could use the help.
I'm a fan of the mission, so I pitched in.
73 spots he has reviewed, on one mobile-first map.

What it does: filter by cuisine, find what is near you, see the latest reviews, get directions.
Built as a gift, no strings.

How I build

  1. Start with the user

    Each app began with a real group and a real problem.
    I brief it like a campaign.

  2. Build with AI as a teammate

    I direct Claude Code through design, build, and QA.
    Every decision that ships is mine.

  3. Ship on a deadline

    Kickoff and Selection Sunday do not move for a bug.

Back to the marketing work