Meetings & Broadcast
Staff host LiveKit video meetings — internal or public broadcast — and the public watches the broadcast in a viewer that needs no login.
The staff side is a meeting queue: create a meeting, then run its lifecycle — start, join, end, or cancel — with the actions duty-gated server-side. A meeting can be internal or a public broadcast; when it's a broadcast, staff flip it live so residents can watch in a public viewer that needs no sign-in.
What you can do
Create a meeting
Open a meeting with a bilingual title, a kind (internal or public broadcast), an optional scheduled time, and a public flag.
Run the room
Start the meeting and Join opens the LiveKit video room; End closes it. The queue filters by status so you see what's live now.
Go live to the public
On a public-broadcast meeting, Go live opens it to the public viewer; Stop broadcast takes it off air while the meeting continues.
Let residents watch
The broadcast viewer is public — no login — so residents can watch a council or commissioners session in their browser.
Duty-gated actions
Start, end, go-live, and the rest are enforced by staff duties server-side; a staffer without the duty gets a clear 403 inline.
Attach to an event
A meeting can reference a calendar event, so the queue lines up with the agenda it was called for.
A typical workflow
- Create the meeting — give it a bilingual title, pick internal or public broadcast, and set a scheduled time.
- Start it — when the time comes, Start moves it to live and Join opens the LiveKit room for staff and attendees.
- Go live (if public) — for a public broadcast, Go live opens the public viewer so residents can watch.
- Stop the broadcast — Stop broadcast takes it off air without ending the meeting itself.
- End or cancel — End closes a running meeting; a not-yet-started meeting can be Cancelled.
A closer look
Hosting is staff-only, but the broadcast viewer is the one public window into this module — residents reach it without an account, which is what makes it usable for open-meeting transparency. The action buttons are surfaced optimistically and rely on server-side duties, so the queue stays simple while access stays controlled.
Staff:
/dashboard/meetings, with each meeting at /dashboard/meetings/[id] and Join opening the LiveKit room. The public broadcast viewer lives on the tenant's public site.Works with
Agenda for the meeting it accompanies · Codification for the ordinances acted on · Website where the public viewer is published.