A retro-styled football club ownership simulation for PC. Take over any of 1,719 real English pyramid clubs — Premier League to Step 7 county football — or found your own. Appoint the right people, set the budgets, grow the commercial side, keep the town on your side, and climb all eleven levels.
Club and league names are real (2025-26/2026-27 memberships, compiled in
src/game/data/pyramid/). Everything else — finances, people, badges, kits,
sponsors — is generated from researched per-level averages
(docs/economy-research.md), not real clubs' data. Player names are fictional.
npm install
npm run dev # development server on http://localhost:5173
npm run build # production build in dist/
npm run preview # serve the production buildOptimised for a 16:9 desktop display (1280×720 or larger). Saves live in the browser's localStorage: three manual slots plus a weekly autosave.
- Advance Week (bottom-left) plays the next week: match, money, news, decisions. Everything else is preparation.
- Decisions arrive in the Inbox and wait until you answer them.
- Insolvency or a collapse in supporter trust ends your ownership.
- A short in-game introduction covers the first five minutes.
npx tsx scripts/simtest.tsRuns a headless soak: three full seasons for each starter club through the real reducer (hiring, sponsors, events, promotion/relegation, save-roundtrip determinism, forced-insolvency game over) and asserts invariants.
src/game/types.ts All state types + the Action union (single contract)
src/game/engine/ Pure game logic — no React
newgame.ts State factory for presets & custom clubs
week.ts The advance-week orchestrator
match.ts Match simulation & commentary
finance.ts Weekly ledger processing
eventsEngine.ts Decision events (static + dynamic)
reducer.ts All player actions (clone-then-mutate)
season.ts, save.ts, selectors.ts, constants.ts (all balance tuning)
src/game/data/ Content — people, sponsors, campaigns,
events (eventsCore + packs A/B/C), headlines
src/game/data/pyramid/ The real English pyramid: 99 divisions, 1,719 clubs
(one file per level group + lane-routing helpers)
src/game/engine/levelEconomy.ts Researched per-level money & rules tables
src/state/ React context (game state + navigation)
src/ui/theme.css The retro-broadcast design system
src/ui/art/ Procedural SVG: badges, kits, portraits, stadiums,
sponsor logos, trophies
src/ui/screens/ One file per screen
- Events: add an
EventDefto any pack insrc/game/data/eventsPack*.ts. - Clubs/leagues: extend the pools in
src/game/data/clubs.ts. - Campaigns/sponsors:
campaignsData.ts/sponsorsData.ts. - Balance: nearly every number lives in
src/game/engine/constants.ts.
The game is a self-contained static build (dist/), so it wraps cleanly with
Tauri (small binaries) or Electron. No server, accounts,
API keys or network access required at runtime.