Clocktower ST

BotC storyteller tool
Side project · 2026

A Storyteller's control panel for Blood on the Clocktower, it runs setup, night order, and voting so you can keep your head at the table instead of in a rulebook.

Clocktower ST screenshot
Demo · running a night phase through the role order

Storytelling Blood on the Clocktower is the fun part; the bookkeeping is not. You're tracking who's alive, whose ability fired, who still has a ghost vote, what order the night wakes in, and which nomination is on the floor, all while reading the room and keeping a straight face. Lose the thread and the game stalls. The usual answer is a paper grimoire and a good memory, and both of those crack under a full table.

Clocktower ST takes the ledger off your hands. It walks you through the game phase by phase, holds the state you'd otherwise be juggling in your head, and surfaces the right reminder at the right moment, so the only thing you're actually deciding is what makes a good story. If you make a wrong call, you step it back rather than reconstructing the board from memory.

What it holds

Custom scripts

A fourth script slot takes your own. It reads the JSON that the official script tool at script.bloodontheclocktower.com exports, matching role IDs loosely enough that fortuneteller and fortune_teller both land, and it accepts homebrew entries alongside official IDs. Roles can also be written by hand in the app or toggled in from the 72-role pool, and a finished ruleset can be named, saved, exported to a file or pasted between devices. Travellers and Fabled are not supported and are skipped on import with a warning.

Built with

React 19 · TypeScript · Vite · Tailwind v4. State is a hand-rolled useGameStore hook over useState, not a state library. Nothing in the source makes a network request except a cookieless visit counter, and it ships as a static GitHub Pages build: no account, no server, nothing to install. It is phone-first and only phone-first, a fixed bottom tab bar with iPhone safe-area padding and exactly one responsive breakpoint in the whole tree, because a Storyteller is holding a phone, not sitting at a desk.

Known limits 5 to 15 players, which rules out the Traveller games that go past 15. The execution threshold is a strict majority rather than the official half-or-more, so an even number of living players needs one more vote here than at the table.

← all projects