Skip to content

Moderator module overview

How the Moderator module works in Timers Studio: the login gate, the player mirror, the widget grid, the intercom with the director, and the polls it can run on stage.

Last updated

Moderator module overview

The Moderator module is the second pair of hands during a show. The director drives the rundown from the Studio; the moderator watches the same stage output and can relay information, run a poll, page a speaker, or chat privately with the director — without touching the main timer controls. This page describes what is on screen at /moderator/<room>, how it talks to the rest of Timers Studio, and what the moderator can and cannot do.

One route, one room

The module is served from a single URL:

  • timers.studio/moderator/<room> — opens the moderator player, rendered by ModeratorPlayerView. The room ID is the same as the one used by the director’s Studio (/id/<room>) and by the public Player (/player/<room>).

The moderator never sees the director’s transport bar. They see what the audience sees, plus a set of widgets on the side for moderation tasks.

What you get after login

ModeratorLoginView asks for the session password set by the director in the Links modal. Once the password matches, the moderator lands on a two-zone layout:

  • Main area — Player mirror. A pixel-for-pixel copy of the audience Player: the same TimerDisplay or AgendaPlayerView rendered from the same realtime state. When the director starts a timer, the moderator sees the clock tick at the same millisecond as the stage.
  • Widget side — Moderation tools. A grid rendered by DynamicWidgetGrid that can hold up to nine widgets: timer, agenda, agenda_focus, intercom, visual_pager, wharton, qa_push, qa_radar, poll. The director picks which widgets are visible and in what order.

Talking to the director

The moderator and the director share a private intercom, rendered by ModeratorIntercomChat. Messages are stored in Supabase table moderator_intercom and pushed in realtime to both sides. The intercom supports:

  • Plain text and emoji.
  • Emojicons — small icons that stand for recurring concepts ([TIMER], [MODERATOR], [TECH_ISSUE], etc.).
  • A flash signal (the lightning button) that makes the other side’s input field blink until one of them replies.
  • Typing indicator and delivery receipts.

Running a live poll

Polls are the main output tool of the moderator. Three components wire up the round trip:

  • PollModeratorWidget (moderator side) — create, launch, close, push results.
  • SpectatorPollVote (audience side at /ask/<room>) — the spectator chooses one option.
  • PollWidget (player side at /player/<room>) — the stage overlay that shows the live result bars once the moderator hits Push Results.

See Run a live poll for the step-by-step.

  • Timers — the director’s Studio at /id/<room> is the source of truth for the rundown and the timer state. The moderator only receives what the Studio pushes.
  • Agenda — when the director runs an agenda, the moderator’s mirror renders AgendaPlayerView.
  • Gateway — the audience lands at /ask/<room> to vote on the polls the moderator launches. The same Gateway transports the realtime updates between every view.

Scope boundary

The moderator can steer moderation tasks — intercom, polls, visual pager, Q&A push. The moderator cannot edit the rundown, change timers, or switch between the Timer view and the Agenda view: that stays in the director’s Studio. If you need two operators on the timers themselves, both open /id/<room> with a director link.

Where to go next