fae
All work

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 Slaydate event editor: A Lazy Sunday Bloodbath at Hillcrest Community Centre, with event artwork, a map, times, and a description.
Fig. 02: Editing A Lazy Sunday Bloodbath. From the app.

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

The attendees screen: forty players across two rooms with pronouns, room assignments, and an ordered waitlist.
Plate I: Forty attendees, two rooms, and a waitlist that keeps its order.
The stories screen: published game write-ups for each room, one publish toggle each.
Plate II: After the night ends, the stories get published back to the players.

The rest of the catalog

All work