Operations guide
How CSE works
A walkthrough for the people who run the show, not the people who built it. Pick a persona below to see what they sign in as, where they go, and what they actually do on a typical day. Same show, same neighbors, same vibe — just phones in place of clipboards.
One sign-in, all roles
There is exactly one place to sign in. Every role — car owner, attendee, gate volunteer, judge, DJ, vendor, organizer — uses the same form with their issued email + password. The system reads the user's role membership and routes them to the right starting page automatically.
- Each persona below shows a
?next=/pathdeep-link so the user lands in the right place after auth. - The
livingston4thsubdomain isn't a separate login — it's how the platform identifies which tenant the user is signing in to. - Today this admin app is un-gated in dev — when auth lands here it will share the same
eventide_sessioncookie, not a separate login.
Pick a persona
Start here. Each persona shows their own login, their walkthrough, and quick links to where they live in the system.
Show-day roles
The seven people who actually use the system on July 4th.
Car owner / participant
Brings a car, gets it judged, hopefully wins a trophy.
Attendee
Walks the show, looks at cars, votes for People's Choice.
Gate volunteer / staff
Greets cars at the entrance. Sticker on, photo, paid, wave through.
Judge
Walks the show, scores cars on a phone with sliders.
DJ
Manages live song requests during the show.
Vendor / sponsor
Sells food / drinks / retail / services at the show.
Event organizer
Runs the whole thing. Sees everything. The "you" of CSE.
Admin & platform
Less frequent, but documented. Tenant admin sets up once a year; platform staff is CSE-internal.
Tenant admin
Owns the tenant. Above the organizer. Used if Livingston runs more than one event.
Platform admin
CSE platform staff. Cross-tenant. Visually distinct (amber accent) so it's obvious you're in god-mode.
Volunteer (non-car-show sub-events)
Check-in scanner for the beer garden, race, kids zone, etc.
DJ
A console showing requested songs in three columns: pending, up next, now playing. Approve, reject, drag to reorder, mark as playing. Audience can upvote requests they want to hear; the DJ's call still wins.
What this persona can do
- Three-column board: PENDING (incoming) · UP NEXT (approved, sorted by votes) · NOW PLAYING (current).
- Swipe right to approve, swipe left to reject (with optional reason).
- Drag UP NEXT cards to reorder — vote count is sortable but DJ override wins.
- Tap "Mark playing" — moves to NOW PLAYING, broadcasts to participants ("Now playing: [song] requested by [name]").
- Keyboard shortcuts: A=approve top pending, R=reject top, J/K=move selection, Space=mark played, ⌘Z=undo last action.
- Profanity filter toggle (default on). Repeat-offender pill on flagged fingerprints.
- Public queue display toggle (off by default — keeps it private if the DJ prefers).
Walkthrough
5 stepsRunning the queue from a tent with a laptop
Open the console
Sign in, /dj/console. Three columns of equal width fill the viewport. A toolbar at the top has the event name, the public-queue-display toggle, and a help chip (? opens shortcuts).
Pending requests come in
Each card shows song title, artist, optional dedication, submitter's first name, vote count, and how long ago it was submitted. Tap green check to approve or red X to reject. Touch-swipeable too.
Reorder UP NEXT
Once approved, cards move to UP NEXT, sorted by vote count by default. Drag the grab handle to override — DJ's judgment always wins.
Mark a track playing
Tap "Mark playing" on the UP NEXT card you're about to spin. It moves to NOW PLAYING (one big card, full column height, animated EQ). Anyone with the request page open sees "Now playing: [song]" update live.
After the song ends
Tap "Played" — moves to history, the next UP NEXT card becomes a preview in the empty NOW PLAYING column.
Quick links
Where this persona lives in the public app.