Fae · specimen №02
Slaydate
Event logistics for people who run in-person Blood on the Clocktower games.
An events platform for in-person Blood on the Clocktower games: public signups, ordered waitlists, multi-room seating, door check-in, and post-game recaps.
- Role
- Product design, engineering, infrastructure
- Platform
- Web
- Years
- 2025–present
- Built with
- Ruby on Rails · Hotwire · PostgreSQL · Passkeys · Apple Wallet · Google Wallet
- Status
- Live
The problem
Organizers were running recurring games out of group chats and spreadsheets. Signups arrived as chat messages. Seat assignments got retyped by hand into a second document. A venue change at 4pm meant messaging forty people individually and hoping.
The administrative work of running the event had grown large enough to crowd out the reason for running it. Nobody starts a weekly game night because they wanted to maintain a spreadsheet.
The approach
The design constraint was that organizers are volunteers doing this after work, and players are on their phones. Everything had to survive being done badly, in a hurry, one-handed, on a bus.
That pushed the whole product toward removing steps rather than adding features. Passwordless sign-in, because a password reset email is where a casual signup dies. One-click waitlist joins for returning players. A single publish action that assigns seats and emails only the people whose status actually changed, so nobody gets a re-confirmation they didn't ask for.
Decisions that mattered
4 entries
Passwordless from day one
Magic links and passkeys, no password field anywhere. The cost of a forgotten password is not a support ticket. It's a player who silently doesn't come.
Publishing is one action, not two
Assigning players to rooms and notifying them are the same operation. Emails go only to newly assigned players, so an organizer can shuffle the roster all week without spamming anyone.
Timezones are explicit, never inferred
The event carries its own timezone. Guessing from the browser is right often enough to be dangerous and wrong often enough to make someone miss a game.
Real-time by default
Two organizers editing the same waitlist see each other's changes live. Built on Hotwire, so it's server-rendered HTML over a socket rather than a client-side state layer to keep in sync.
What it does
For organizers
- Recurring series generation with preview before committing
- Multi-room events with per-room capacity and naming
- Ordered, transparent waitlists: no ticket scramble
- Door check-in with walk-in support
- Per-event funnel metrics: views, signups started vs. finished
For players
- Passwordless signup, one-click waitlist join
- Apple/Google Wallet ticket with web fallback
- Automatic day-before reminder
- Post-game recaps, readable only by players who were actually seated
Marginalia
Slaydate and Blocktower talk to each other: scan a QR code and the night's roster loads straight into the storyteller's iPhone. When the game ends, the log flows back and players can read the recap that evening.
More figures
From the app