Unattended (Kiosk) Workshops
A workshop can run on its own — on a TV at a trade show booth, in a foyer, on a screen next to a stand — with nobody clicking through it and nobody joining on a phone. Every piece needed for that already exists in the workshop JSON: this page puts them together.
apps/web/workshops/deepfake_detective_image_quiz_kiosk.json is the reference
implementation. It is the Deepfake Detective image quiz with the interactive
parts switched off.
The four ingredients
1. autoNext on every node
autoNext is the number of seconds a node stays on screen before the workshop
moves on by itself. A node without it waits for the host to press the arrow key.
A kiosk workshop therefore needs autoNext on every node — one node without
it stops the whole loop until somebody presses a key.
{
"type": "Slide",
"autoNext": 8,
"data": {
"headline": "Level 1",
"subheading": "Bereit, Deepfakes zu erkennen?"
}
}
bodySlide text goes in headline, subheading, content or text — a body key
is silently dropped, and the slide renders with the headline only. Several older
workshops still carry one.
On a Quiz node autoNext means something slightly different: it is the time the
solution stays up, counted from the moment the answer is revealed. The
question phase before it is governed by answerTime. A quiz with
"answerTime": 60, "autoNext": 20 shows the question for a minute and the
solution for twenty seconds. While the solution is up, the presenter view shows
"Weiter geht's in X Sek." next to the "Lösung" label.
2. showScoreboard: false on every Quiz node
Without participants there is nothing to rank, and the empty scoreboard between
questions is dead air. showScoreboard: false drops that third phase, so the
quiz goes question → solution → next node.
{
"type": "Quiz",
"autoNext": 20,
"data": {
"text": "Welches Bild ist fake?",
"options": [{ "imageUrl": "real-1.jpg" }, { "imageUrl": "fake-1.jpg" }],
"answer": [2],
"answerTime": 60,
"showScoreboard": false
}
}
3. removeLobby: true and allowJoin: false
removeLobby drops the lobby node, so the workshop opens on its first real node
and the join code disappears from the header. allowJoin: false closes the match
for new participants, so a join code that somebody photographed earlier does not
let people in halfway through the loop.
{
"settings": {
"name": "Deepfake Detective Kiosk",
"hostAsPresenter": true,
"removeLobby": true,
"allowJoin": false,
"useChat": false
}
}
allowJoin was previously only reachable through the toggle in the host control
panel; it can now be set in the workshop JSON so a kiosk workshop starts closed
instead of being closed by hand every time. The gate never applies to hosts —
they can open and reload a closed match freely.
4. No closing ceremony — loop instead
Leave the final Scoreboard node out. When the last node's autoNext runs out,
the workshop wraps around to node 0 on its own — that wrap-around is built into
the node transition and needs no setting. Give the last slide a short autoNext
and use it as the seam:
{
"type": "Slide",
"autoNext": 10,
"data": {
"headline": "Gleich geht es wieder los!",
"subheading": "Das Quiz startet in wenigen Sekunden von vorn."
}
}
Each round starts clean: a Quiz node clears the answers it collected when it is left, so answers from the previous round neither linger on screen nor cut the question phase short.
Halting the loop by hand
Give every node autoNextStoppable: true and the presenter view grows a
Stopp button in the footer, next to Zurück/Weiter. That is what you reach for
when somebody at the booth wants to keep looking at an image or talk it through:
the countdown freezes, the button becomes Fortsetzen, and the loop carries on
from where it stopped. The reference workshop sets it on every node.
Running it at the venue
- Push the workshop through
/StoragePush. - Sign in as a host account and create a match from the workshop.
- Open the presenter view on the screen. Nothing else — the opening node arms its countdown as soon as the host joins, so the workshop starts moving and keeps looping on its own.
Images are loaded from NEXT_PUBLIC_RESOURCE_LOCATION + the workshop key + the
file name. A kiosk variant with a new file name is a new workshop key, so
copy the image folder in the object store to the new key before the event —
otherwise every image 404s.
Round length is roughly the sum of every autoNext plus every answerTime. The
Deepfake Detective kiosk workshop runs about 18 minutes per round with
answerTime: 60; drop answerTime to 20–30 seconds if the audience is walking
past rather than standing still.