Current season pages read directly from the Sleeper public API, showing live matchups, standings, lineups, trades, and waivers
fantasy-football-website-with-history — Svelte Blog Template
By garrett-pdx
A SvelteKit website template for Sleeper fantasy football leagues that shows current and historical season standings, matchups, records, rivalries, league lore, and supports an AI-written weekly blog.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
An offline Python pipeline pulls and cross-checks each season's data to generate historical pages from the first season to the present
Stat Lab supports sorting and charting historical games, with view state saved in the link for easy sharing
An AI agent can write a Monday recap and midweek preview each week, fact-checked before publishing, with articles as Markdown files
Generates league colors, seals, wordmarks, and icons from two colors, and includes an automatically numbered constitution page
Supports multiple Sleeper league formats such as redraft, keeper, and dynasty, along with playoff structures
Template Details
This template is for building a website for a Sleeper fantasy football league that includes its complete history. The current season section reads directly from the Sleeper public API, showing live scoring matchups, standings (including divisions, ties, and median games), power rankings, lineups, trades and waivers, and free agent search by depth chart position. The history section is generated by an offline Python pipeline that builds datasets: it pulls each season's data from Sleeper and cross-checks it against Sleeper records before writing, covering season pages from the first season to the present, final standings, matchup tables, championship paths, drafts and keepers, trades, and best and worst weeks.
The site also includes records and a Stat Lab (a sortable, chartable historical game lab with view state saved in the link), a Trophy Room built from hall of fame and archive facts, a head-to-head rivalry grid, manager career pages, and hundreds of factual "lore" items generated from league history. The blog is written weekly by an AI agent as a Monday recap and midweek preview, fact-checked before publishing, with articles stored as Markdown files. Visually, it supports generating league colors, seals, wordmarks, and icons from two colors, and includes a constitution page with automatic rule numbering.
The template claims to support any Sleeper league format: redraft, keeper, or dynasty; superflex, IDP, kickers, and defenses; any number of teams and playoff sizes; byes, two-week rounds, consolation games, and toilet bowls; median games, divisions, orphan teams, and leagues in their first season. Configuration is centralized in the league/ directory, engine code does not need to be modified for an individual league, and the engine can be updated via script. The site is based on SvelteKit, deployed on Vercel, and the data pipeline can be run twice a week by a GitHub Action. The league/ in the repository is a real Sleeper league demo using neutral content. The project began as a fork of League Page, is MIT licensed, and is not affiliated with Sleeper.
Is it right for your project?
Use Cases
- Build an official website with complete historical records for an existing Sleeper fantasy football league
- Showcase the league's standings, matchups, records, rivalries, and lore to league members in one place
- Automatically generate weekly league recap and preview blogs with AI, reducing manual writing
- Query and visualize historical league game data in Stat Lab, and share links to group chats
Suitable For
- League members or commissioners who have a Sleeper fantasy football league and want to showcase its history
- Developers familiar with SvelteKit or willing to follow the documentation and agent skills to complete configuration
- Maintainers who need to provide Markdown content and an AI writing workflow for the league blog
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Using a coding agent is recommended: click Use this template, then provide the Sleeper league link in Claude Code, and the league-setup skill handles checking, asking questions, building data, and guiding deployment
- 2
Manual setup requires running npm install and using scripts/try-league.sh to verify whether the engine supports the target league
- 3
Replace the demo configuration in league/, keeping only the league ID and name, then run python3 scripts/pull-league-history.py, npm run derive-site-data, and npm run derive-narratives
- 4
Run python3 scripts/sync-managers.py --photos to sync manager photos, then run npm run brand and npm run smui-theme-light to generate brand assets
- 5
See docs/setup.md for detailed steps; the engine can be updated with python3 scripts/update-engine.py without conflicting with league/ content
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing covers the free version in the public repository under the MIT license; the free scope is the code in that version and does not mean external services or third-party assets are free.
Must comply with when using
- You may use, modify, commercially use, and distribute the code in this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- Live pages depend on the Sleeper public API for data and require the target league to exist on the Sleeper platform; if the API is unavailable or the league is not a Sleeper league, live features will not work.
- Historical page data must be pulled and built from Sleeper through the offline Python pipeline; it does not work out of the box with the template alone, and the data scraping scripts must be run.
- The recommended setup flow depends on Claude Code's league-setup skill and guides deployment to Vercel, involving an external coding agent and the Vercel platform.
- The data pipeline can be run twice a week via GitHub Action, meaning automatic updates depend on the GitHub Actions service.
- The project is not affiliated with Sleeper; when using the Sleeper name and API, you must observe the relevant platform terms yourself.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Live pages read Sleeper's public API directly.
Original README
History pages read a dataset built offline by a small Python pipeline (standard library only) that pulls every season from Sleeper
Original README
The `league-setup` skill checks your league, asks you one round of questions, builds the data, writes your league's pages, generates your colours and logo, previews everything and walks you through deploying on Vercel.
Original README
A GitHub Action can run it twice a week.
Original README
https://github.com/garrett-pdx/fantasy-football-website-with-history/blob/main/LICENSEhttps://github.com/garrett-pdx/fantasy-football-website-with-history/blob/main/README.mdNot affiliated with Sleeper.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-05. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- Svelte
- Website type
- Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-05
- Screenshot last checked
- 2026-10-05
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Svelte as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-06
Inspect the recorded source material
SHA-256: ddb318884cc3fa4b60d39fac25c0f529a12bf61403741afe383859dd05e56964
2026-10-05T23:36:11.483Z
Source file / repository<div align="center"> <img alt="Fantasy Football Website with History" src="static/brand/wordmark.svg" width="320px" /> # Fantasy Football Website with History **A website for your Sleeper fantasy football league, with its whole history in it.** Live standings, matchups and rosters, plus every past season, the records, the rivalries, the lore and a weekly blog — in your league's colours, set up from a league ID. Live example: **[muddleague.site](https://muddleague.site)** </div> --- ## What your league gets - **This week:** matchups with live scores, standings (divisions, ties and median games when your league has them), power rankings, rosters, trades and waivers, and a free-agent search by depth-chart slot. - **Every season, back to the first:** a page per season with the final table, the bracket, the champion's run, the draft and keepers, the trades, and the best and worst weeks — including seasons played before Sleeper. - **Records and Stat Lab:** highs, lows, close calls and rankings, and a sortable, chartable lab over every game ever played, with the view kept in the link so it can go in the group chat. - **A Trophy Room** with a Hall of Fame and facts from the archive; **rivalries** with a head-to-head grid; **manager pages** with career records and finishes. - **Lore:** a few hundred verified facts about your league, generated from its history, for bios, posts and trash talk. - **A blog** that an AI agent can write every week — a Monday recap and a midweek preview — from your league's own numbers, fact-checked before it publishes. Posts are just Markdown files. - **Your league's look:** colours, a seal, a wordmark and icons generated from two colours. - **A constitution** page built from your rules, numbered automatically. It handles any Sleeper league format: redraft, keeper or dynasty; superflex, IDP, kickers and defenses; any team count and playoff size, byes, two-week rounds, consolation brackets and toilet bowls; median games; divisions; orphaned teams; and a league in its very first season. ## Set it up **With a coding agent (recommended).** Click "Use this template", open your copy in [Claude Code](https://claude.com/claude-code), and say: > Set up a site for my Sleeper league: https://sleeper.com/leagues/<your league id> The `league-setup` skill checks your league, asks you one round of questions, builds the data, writes your league's pages, generates your colours and logo, previews everything and walks you through deploying on Vercel. Other agents can follow the same playbooks in [`.claude/skills/`](.claude/skills/) (see [AGENTS.md](AGENTS.md)). **By hand.** [docs/setup.md](docs/setup.md) walks through every step. The short version: ```bash npm install scripts/try-league.sh <league id> # does the engine handle your league? # replace the demo in league/: a league.json with just your ID and name (docs/setup.md), then: python3 scripts/pull-league-history.py && npm run derive-site-data && npm run derive-narratives python3 scripts/sync-managers.py --photos npm run brand && npm run smui-theme-light npm run dev ``` ## How it works Everything about one league lives in [`league/`](league/): a config file (documented field by field in [`schema/league.schema.json`](schema/league.schema.json)), Markdown for the home page, the constitution and the blog's voice, manager photos, and posts. Everything else is the engine, which you never edit for your league — so updating to a new release (`python3 scripts/update-engine.py`) never conflicts with your content. Live pages read Sleeper's public API directly. History pages read a dataset built offline by a small Python pipeline (standard library only) that pulls every season from Sleeper, then checks its own work against Sleeper's records before writing anything. A GitHub Action can run it twice a week. The site is SvelteKit, deployed on Vercel. This repository's own `league/` holds a demo league: a real Sleeper league with neutral content. ## Credits Built on [League Page](https://github.com/nmelhado/league-page) by Nicholas Melhado and its contributors, which this project began as a fork of. MIT licensed; see [LICENSE](LICENSE). Not affiliated with Sleeper.
Explore similar templates
Compare previews and descriptions within the same stack and category.

CMSaasStarter
CMSaasStarter is an MIT-licensed SaaS starter template built with SvelteKit, TailwindCSS, DaisyUI, and Supabase, with Stripe Checkout and Stripe Portal for payments.
Svelte · Admin dashboard

sveltepress
Sveltepress is a SvelteKit-based static site generator for documentation and blogs, with Markdown that can use Svelte 5 Runes, components, and interactive islands.
Svelte · Tool Site

sveltekit-blog-template
A SvelteKit blog template that uses mdsvex for Markdown content and Tailwind for styling, with a theme referencing Tailwind's Spotlight blog template.
Svelte · Blog

sveltekit-mdsvex-blog
A minimal blog template built with SvelteKit and MDsveX, written in TypeScript. It supports writing articles in Markdown with embedded Svelte components, recognizes .svelte.md, .md, and .svx files, and is preconfigured with @sveltejs/adapter-static for static hosting deployment.
Svelte · Blog

tablog-svelte
A minimalist SvelteKit blog theme that generates all content from Markdown files in /content via mdsvex, with site configuration centralized in /src/config.js. Entries with a date attribute become posts, those without become static pages, and draft: true entries are inaccessible.
Svelte · Blog

sveltekit-mdsvex-blog-template
A SvelteKit and MDsveX blog starter for Markdown writing with embedded Svelte components, Tailwind CSS typography, tags, dark mode, SEO metadata, and Cloudflare Workers deployment configuration. Requires Node.js 22.12+ and pnpm 11.17.0; third-party demo assets need separate license verification.
Svelte · Portfolio
