Fair Shake
Every kid plays. Every kid sits. Nobody gets left out.
Enter your roster, positions and periods, and it builds a rotation with near-equal minutes and bench turns for each child, plus a printable game-day card.
Zip, 1.3 MB. MIT licence. Built 24 Oct 2026.
Live preview
This is the real site, not a mock-up. Click around; the button on it opens the working app.
What you get
Everything a tool needs, already done.
Pages and screens
- Hero
- Roster setup
- Rotation grid
- Game-day card
- Napkin comparison
- Closing call to action
Features
- Minutes within one period for every child
- Everyone takes a turn on the bench
- Respects positions each child can play
- Prints the whole plan on one page
- Works on a phone the night before
- Roster of eight to sixteen children
Palette
#4cc173#6dd18f#07210f#1b1f1c#5c625d#eef1ec
Style
- Warm
- Bold
- Editorial

For developers
A real codebase, not a page builder export.
Stack
Vite, React 19 and TypeScript for the app. The launch page is plain HTML, CSS and a little JavaScript with no build step. Vitest for unit tests, Playwright for browser tests.
Run it
unzip fair-shake.zip
cd fair-shake
npm install
npm run devIn the zip
site/the launch page with the built app insite/app/src/ande2e/the app source and testsdocs/technical-docs/architecture, runbook, quick referenceSTART-HERE.mdandLICENSE(MIT)
More like this
Also on the shelf

Many Hands
Many Hands fills your monthly volunteer rota for services or langar shifts, spreading jobs evenly, respecting away dates and flagging gaps and double bookings.

Ruled
Build flashcard decks, review the cards due each day, and let the SM-2 method schedule when each one comes back, all in your browser with CSV import and export.

Copybook
Plan each student's sessions by topic, record what you covered and the homework set, then print a one-page progress note for parents.
