Boxscores
A social diary for the soccer matches you watch. Browse real matches, log the ones you watched, rate them, tag them, write reviews, and see it all on your profile.
View source- Interface
- Next.js + TypeScript
- Matches, reviews, profiles
- API
- Go + chi
- JSON endpoints on Netlify
- Data
- Postgres + Supabase
- Schema, auth, storage, RLS
GitHub Actions checks before merge
A shared application, from browser to database
I architected a Next.js App Router frontend and a Go JSON API using the chi router. The API runs as serverless functions on Netlify. The product includes match logging, ratings, tags, reviews, profiles, and a social follow feed.
Data modeling and access control
I designed the PostgreSQL schema on Supabase across 19 migrations, with row-level security and an idempotent migration runner. Supabase Auth and Storage support the application alongside the database.
Keeping match data current
A daily cron-triggered serverless pipeline ingests match data from football-data.org for six competitions into PostgreSQL, supporting fixture discovery in the application.
Moderation and account lifecycle
For the companion iOS client, I implemented user reporting, blocking with app-wide hiding, and in-app account deletion to address App Store review requirements.
Checks before a merge
GitHub Actions gates merges on Go build, vet, and test checks, TypeScript typechecking, and a production Next.js build. These checks give the team a shared baseline for changes across both languages.