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.
A phone-first fines dashboard for our fantasy football league, running off a Google Sheet.
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.
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.
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.
I treated a spreadsheet as a perfectly good database and didn't migrate off it just because I could.
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.