← All projects

TLL Fines Tracker

A phone-first fines dashboard for our fantasy football league, running off a Google Sheet.

TLL fines dashboard on mobile showing the league pot, open fines by manager, and who still owes
The live dashboard on a phone: pot leftover, managers with open fines and what's still to collect.

The short version

What it is

The Google Sheet stays the source of truth, and this puts a proper phone dashboard on top: the pot, who owes what, each manager's history and an admin area for the commissioner.

What I had to steer

I kept it small. The sheet stays the source of truth. The app reads it, caches it and adds admin screens only where the spreadsheet was getting in the way. There's no real league data on this site: the screenshots are the real app pointed at fake data.

What I wired together

Next.js App Router, TypeScript and Tailwind on Vercel, reading a Google Sheet CSV export with server-side caching, with write-back to the sheet for commissioner actions.

Where I pushed it

I treated a spreadsheet as a perfectly good database and didn't migrate off it just because I could.

The build log

A front end for the fines sheet

The league’s fines already lived in a spreadsheet, which is fine as a source of truth and miserable to look at on a phone. I wanted to keep the sheet and give every manager a page that says who owes what, what’s been paid and how the pot’s looking.

TLL Fines Tracker is a Next.js dashboard that reads a Google Sheet CSV export. The homepage shows the league pot, manager balances, outstanding fines and the full ledger. Manager pages show individual history. The admin area lets the commissioner create, edit, mark paid and delete fines without living inside AppSheet.

The sheet stays the source of truth. The app reads it, caches it, formats it and adds admin screens only where the raw spreadsheet was getting in the way. Google Sheets is a perfectly decent database for a small league.

The screenshots are the real app, pointed at fake data so the league’s real names and fines stay off the internet.