Module Reference
Deep dive on every built-in module plus the custom HTML5 module system. For the overview and the three-view concept, see Modules under Curate.
📝 Module screenshots pending
The v0.9.71 module screenshot pass hasn't happened yet. Each section below is a placeholder — proper screenshots of each module's Index / Control / Results views and detailed option reference will follow once those captures are produced.
Auction
Live bidding with real-time updates. Documentation to follow — screenshots pending.
Countdown Timer
Synchronised countdown with colour triggers. Documentation to follow — screenshots pending.
Group Photo
Coordinated photo capture across a group. Documentation to follow — screenshots pending.
Guest List
Attendee check-in. Documentation to follow — screenshots pending.
Happy Face Survey
Three-option emoji feedback. Documentation to follow — screenshots pending.
Leaderboard
Scores and rankings display. Documentation to follow — screenshots pending.
PhotoBooth
Self-service photo capture and review. Documentation to follow — screenshots pending.
Polling
Audience voting with live results. Documentation to follow — screenshots pending.
Q&A
Audience questions with moderation. Documentation to follow — screenshots pending.
Raise Your Hand
Audience attention queue. Documentation to follow — screenshots pending.
Word Cloud
Aggregated text responses. Documentation to follow — screenshots pending.
Custom modules (HTML5)
Beyond the built-ins, you can build fully custom interactive modules using HTML/CSS/JavaScript.
Custom modules use the same three-view structure as built-ins:
- Index (required) — guest-facing HTML, fullscreen on devices. Call
EventSync.send(data)to submit responses. - Control (optional) — Dashboard control surface. Call
EventSync.send(state)to update module state. - Results (optional) — aggregated response display.
JavaScript API
Available inside every module page:
EventSync.moduleId,.deviceId,.deviceName,.groupName,.viewEventSync.send(data)— submit data to the server.EventSync.onStateUpdate(callback)— receive state updates from the server.EventSync.getState()/EventSync.getState(callback)— pull current module state.
Proxied vs Direct URL
Custom modules can load content from an external URL instead of stored HTML:
- Proxied — the server fetches and caches the remote content, then serves it to devices. This preserves the air gap — devices only ever talk to the EventSync server, never directly to the internet.
- Direct — devices load the URL themselves. Requires that the event network provides internet. Only use when you specifically want the devices to hit a live service.
💡 Use cases for custom modules
Branded quiz games, custom voting interfaces, integration with external systems (CRM check-in, digital signage platforms), or embedding an existing web app directly on event devices. Anything that's a website can be a module.