Venue mode
Some events run on a venue server: a machine at the event, on a local network
we set up, instead of in the cloud. Your booth calls the same routes at the same
address either way. On the venue network, api.theloungebooth.com answers from
the venue server. The venue server copies everything to the cloud as the event
goes, and the cloud sends the gallery links.
venueMode on GET /events tells you which kind of
event you’re working. GET /health answers "venue": true
from the venue server and false from the cloud, so you can tell which one your
booth is talking to right now.
What changes for the booth
Section titled “What changes for the booth”Nothing in the routes. Register, upload and complete as on the
booth page. Upload URLs point at the venue server rather than
cloud storage; use the url you’re given, as always.
Three things behave differently:
- Links go out after sync, not at complete.
completeanswers as usual, and the venue server’s gallery is live at once for guests on the venue Wi-Fi. The email or text reaches each guest once that session has synced. - The cloud gallery waits for sync. Until a session arrives, its link opened off the venue Wi-Fi says the photos aren’t online yet.
- Sync is yours to watch. The two routes below show where the event stands and start a sync by hand.
Before the event: pull
Section titled “Before the event: pull”We do this, online, before the event starts. In cloud admin, staff tick Venue
mode on the event while it has no sessions. On the venue server they run
bun run venue:pull, which copies the event, its sets, our staff accounts and
every API key from the cloud. Your key works on the venue server unchanged.
A key made or revoked after the pull isn’t known there. Pulling again brings it across, any time before the event’s first session.
During the event: sync
Section titled “During the event: sync”Both routes take your API key, like every other route. Every completion starts a sync. A run sends the photos the cloud doesn’t have yet, then the whole event’s sessions and guests. The cloud sends the links still owed. Repeating a run changes nothing and sends nothing twice, so a failed run just waits for the next one. Nothing is deleted from the venue server.
GET /venue/sync
Section titled “GET /venue/sync”Where the event stands. Venue server only. No parameters.
{ "event": { "id": "7Kq2mZ0aBx91Tc", "name": "City Launch" }, "pulledAt": 1758499200000, "triedAt": 1758501902000, "syncedAt": 1758501902000, "error": null, "sent": { "sessions": 12, "photos": 187 }, "pending": { "sessions": 0, "photos": 0 }, "running": false}| Field | Type | What it is |
|---|---|---|
event.id, event.name |
id, string | The event this venue server holds. It holds one at a time. |
pulledAt |
time | When the event was pulled from the cloud. |
triedAt |
time or null |
When the last run started, good or not. null before the first. |
syncedAt |
time or null |
When the last good run started. Everything written before then is in the cloud. |
error |
string or null |
Why the last run failed, in full. null after a good run. |
sent.sessions, sent.photos |
whole numbers | What the last good run sent: the whole event so far. |
pending.sessions, pending.photos |
whole numbers | Sessions registered or completed, and photos added, since the last good run. |
running |
boolean | A run is going now. |
| Status | Body | When |
|---|---|---|
404 |
{ "error": "Nothing pulled yet." } |
The venue server holds no event. |
409 |
{ "error": "Sync runs on the venue server." } |
You reached the cloud, not the venue server, for example from off the venue Wi-Fi. |
POST /venue/sync
Section titled “POST /venue/sync”Starts a run, or queues one behind a run already going. No request body.
Answers 202 Accepted with { "ok": true } at once, because pushing an
event’s photos can outlast your HTTP timeout. Read GET /venue/sync to see how
it went. Any number of requests during a run make one more run, not one each.
| Status | Body | When |
|---|---|---|
409 |
{ "error": "Sync runs on the venue server." } |
As for GET. |
After the event: the next one
Section titled “After the event: the next one”The venue server syncs as the event goes, so the cloud normally has everything
by the time the booth packs up. Keep the booth’s own copy of the photos until
pending reads zero and error is null.
For the next event, staff run bun run venue:pull again. It syncs the old event
one last time and wipes it from the venue server only if the cloud takes it all.
If that sync fails, nothing is deleted. Point your booth at the new event’s set:
ids change from event to event, keys don’t.