Manage your league. Own the game.
League and tournament manager for Blood Bowl (Games Workshop, 3rd Season Edition) — the whole competitive loop in one app: teams, matches, standings, player progression, injuries and in-league news.
🌐 bowlify.co · Installable PWA · Android
Unofficial fan project. Blood Bowl and Warhammer are trademarks of Games Workshop. No rulebook content is redistributed — the app models the rules, it doesn't publish them.
Leagues
- Create or join a league, register teams under per-league constraints (allowed races, TV cap, SPP, star players, inducements)
- Record matches with full rosters — touchdowns, casualties, MVP, SPP awards
- Standings, rankings and season history
- League news with generated illustrated headlines
Tournaments
- Independent tournament mode with its own settings, join flow and brackets
- Public shareable tournament view (
/t/[id]) — no account needed to follow along
Teams & players
- Roster builder over the 29 core Season 3 rosters, each with positional limits, cost and special rules
- Player progression: SPP → level ups, skill picks by category, permanent injuries, treasury
- Player sheets with full stat lines (MA / ST / AG / PA / AV)
Reference
- Built-in wiki for races and skills, searchable
Platform
- Dark-mode-first design system built from the Bowlify brand guide
- Phone, tablet and desktop from one codebase
- Friends, notifications, profile
| Layer | Tech |
|---|---|
| App | Expo SDK 54 · Expo Router (file-based) · React Native 0.81 · React 19 |
| State | Zustand |
| Data & auth | Firebase Auth (Google Sign-In) · Firestore |
| UI | Dynamic StyleSheet via useTheme() · Moti · Linear Gradient · Inter |
| Platforms | Web (PWA) · Android |
| Language | TypeScript |
- The rules engine is the product. Rosters, skills, progression and injuries are modeled against the official 3rd Season rulebook, with a written audit of the discrepancies found in third-party online references (
docs/BB2025_RULEBOOK_AUDIT.md). - Theme is a function, not a constant. Screens build styles from
useTheme()colors, so light/dark follows the system with no duplicated stylesheets. - Responsive from the same tree —
useResponsive()drives breakpoints; content is capped and centered on wide screens. - Public routes are isolated —
(public)/is unauthenticated by design, for sharing tournaments outside the app.
npm install
cp .env.example .env.local # Firebase web config
npx expo start --web # port 8081Requires a Firebase project with Authentication → Google and Firestore enabled.
app/
(auth)/ login
(app)/ protected app — ligas · torneos · partidos · plantillas · razas · wiki · noticias
(public)/t/[id] public tournament view
config/firebase.ts Firebase init
hooks/ useAuth · useTheme · useResponsive · useGoogleSignIn
store/ Zustand stores
constants/theme.ts colors, spacing, typography
utils/format.ts number formatting (K / M / B)
docs/ product docs, rulebook audit, context docs
