Skip to main content

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?"
}
}
A Slide has no body

Slide 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​

  1. Push the workshop through /StoragePush.
  2. Sign in as a host account and create a match from the workshop.
  3. 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 live under the workshop key

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.

Budget the runtime

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.