Fantasy Football, minus the guesswork
This corner of the portfolio talks to the Sleeper API to pull real fantasy football data from my friends'
head-to-head league. No mock data, no CSV exports — every roster,
matchup, avatar, and score you see here came over the wire from api.sleeper.app moments before you asked for it.
How the sausage is made
The pages use SvelteKit load functions that call Sleeper on the server, parse the responses
into tidy types, and hand clean data to the components. Boring on
purpose — which is why it feels instant.
Sleeper is generous with its free API, but I still cache responses for a minute at a time. Rosters and members barely change mid-season; live scores refresh when you hit the Refresh button (or on visit). Be excellent to rate limits.
On load, the app discovers every season the league has played and rebuilds each one — matchups, rosters, results — so you can flip back to year one and see who the original champion was. (It was probably me.)
The whole thing runs on Sleeper's public endpoints — no API key, no OAuth dance, no backend of my own. Just fetch calls and a league ID hard-coded for one gloriously petty head-to-head league.
What's inside
Every owner in the league with their avatar, team name, and record. Click any card to pop open that team's full roster for any season in the league's history.
A round-robin scoreboard: every owner plays every other owner each week, so the high scorer goes 9–0 and the worst goes 0–9. Pick any season and week to rewind.
During the NFL season, projections update against Sleeper's live state — you can see who's playing right now and how the week is shaking out.
The app walks the league's full season history automatically, so every view has a season picker. Go back and watch a former champion's roster.
Built for bragging rights that expire in February. 🏈