Turn your Sleeper league into a real website.
Standings, rivalries, history, drafts, roster tools, expert rankings, an AI media desk, and a chat assistant that actually knows your league — all from a single league ID.
Next.js · TypeScript · Tailwind CSS · Sleeper API
Sleeper is great for playing fantasy football and not much else. There is nowhere to settle an argument about who owns whom, no record book, no place for the league's running jokes to live.
League Pulse is that place. Give it your league ID and it pulls everything from Sleeper automatically — every season, every trade, every matchup you have ever played — and turns it into a site your league will actually visit.
No database to set up. No accounts to create. No data to enter. One environment variable and it builds itself.
- Home — league status, the current story, and this week's matchups. Tap any matchup for both rosters, previous meetings, and a rivalry score.
- Matchups — every week, every score, same drill-down.
- Rosters — every team, with player production and a drill-down into any player's stats and transaction history.
- Transactions — every trade, waiver claim, and drop, draft picks included.
- Rivalries — all-time head-to-head between every pair of managers, as a colour-coded matrix with game-by-game history.
- History — champions by season, all-time records, and a record book. Champions get a 3D championship ring.
- Next Gen — consistency, explosiveness, clutch, efficiency, momentum, and luck for every manager.
- Schedule Lab — replay the season against someone else's schedule and find out how much was luck.
- Drafts — pick-by-pick boards, including traded picks and where they ended up.
- Trade Tree — follow a trade forward through everything it eventually became.
- Media — real NFL news, waiver wire trends, and the injury report.
- AI Desk — a cast of AI sports commentators who write opinion columns, power rankings, and season predictions about your league. They read the actual record, take sides, and name names.
- Player Rankings — FantasyPros expert consensus, weekly and dynasty, showing which of your managers owns each player.
- Chat assistant — ask anything about your league in plain English. It reads your live Sleeper data and can search the web for NFL news.
Light and dark mode, 22 colour palettes, 19 font pairings, works on any screen, installs as an app.
You need Node.js 18+ and your Sleeper league ID — the number in your league's URL:
https://sleeper.app/leagues/1234567890123456789
└──── this ────┘
git clone https://github.com/ebrown-32/LeaguePulse
cd LeaguePulse
npm installCreate a file called .env.local:
NEXT_PUBLIC_LEAGUE_ID=paste_your_league_id_herenpm run devOpen http://localhost:3000. Your league is already there — every season it has ever played.
Vercel hosts this free and redeploys every time you push.
- Fork this repo to your GitHub account.
- Go to vercel.com and sign in with GitHub.
- Add New → Project, and pick your fork.
- Open Environment Variables and add
NEXT_PUBLIC_LEAGUE_IDwith your league ID. - Deploy.
You will be live at your-project.vercel.app. Share it with your league.
Environment variables only reach new deployments. After changing one, redeploy.
ADMIN_PASSWORD=something_only_you_knowThen visit /admin to change the colour palette, fonts, background, and motion. Changes apply instantly for everyone.
The rulebook lives in content/constitution.md — plain markdown, write whatever your league needs. Roster, scoring, playoff, waiver, and draft settings are pulled from Sleeper automatically, so they never go stale.
Everything above works with just a league ID. These two add-ons need a little more.
AI commentators that argue about your league, publish power rankings, and predict the season — plus the chat assistant.
ANTHROPIC_API_KEY=sk-ant-...
UPSTASH_REDIS_REST_URL=https://....upstash.io
UPSTASH_REDIS_REST_TOKEN=...
CRON_SECRET=any_random_string- Get an API key from the Anthropic console.
- Get free Redis from Upstash — take the REST URL and token. Vercel's filesystem is read-only, so this is where posts and settings are saved.
CRON_SECRETcan be any random string; it keeps the scheduled job private.
Then open /admin → AI Desk → Test connections to confirm everything is wired up, and Run scheduler to publish the first batch. After that it posts on its own, twice a day, spread out so the feed stays alive.
You can rename the assistant, rewrite each commentator's personality, and reroll their avatars from the same panel.
FANTASY_PROS=your_api_keyRequest a free key from FantasyPros. Rankings refresh once a day on their own.
| Variable | Needed for |
|---|---|
NEXT_PUBLIC_LEAGUE_ID |
Everything. Your Sleeper league ID. |
ADMIN_PASSWORD |
The admin panel. Set this before going public. |
ANTHROPIC_API_KEY |
AI desk and chat assistant. |
UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN |
Saving anything in production. |
CRON_SECRET |
Keeping the scheduled jobs private. |
FANTASY_PROS |
Player Rankings. |
NEXT_PUBLIC_MIXPANEL_TOKEN |
Analytics. Optional. |
Prefer a rediss:// connection string? Use REDIS_URL instead of the Upstash pair.
git pull origin main
npm install
npm run buildPull requests welcome.
- Fork the repo
git checkout -b feature/my-feature- Commit and push
- Open a pull request
Free for personal, non-commercial use. You may not resell or sublicense this project without permission.
Built with Next.js · Tailwind CSS · Sleeper API · Claude · DiceBear