Skip to content

Give a talk with a live audience

In this guide you turn a deck into a talk the room takes part in. The audience scans a QR code on your first slide and follows along on their phones; you run a poll, a quiz with a leaderboard and a round of questions, click through from your phone, and read the results afterwards. Nobody in the audience installs anything or signs in.

You need:

Everything below also works without a room, as a rehearsal: on your laptop, live components show an offline version of themselves on one screen, so you can write and check the deck first.

---
title: Shipping on Fridays
timer: countdown
duration: 25min
---
# Shipping on Fridays
<QrJoin caption="Scan to vote and ask questions" />

<QrJoin> draws a QR code and the short address of the deck’s audience page, /join. Put it where people will see it while they sit down. size sets the code’s size in pixels (default 260). The same QR is in the presenter view’s Room tab all through the talk, for latecomers.

On the audience page, each person sees the slide you are on, drawn exactly as on the projector, and can react, ask and upvote questions, answer polls and quizzes, say the pace is too slow or too fast, raise a hand, and bookmark a slide. They follow you until they move on their own; a Follow the presenter button brings them back.

---
## Who deploys on a Friday?
<Poll
id="friday"
question="Do you deploy on Fridays?"
options={["Every week", "Sometimes", "Never", "Only by accident"]}
/>

Give every poll an id that is unique in the deck: results are kept under it. Other kinds:

<Poll
id="safety"
kind="multi"
question="Which of these do you use?"
options={["Feature flags", "Canary releases", "Automatic rollback", "None yet"]}
/>
<Poll id="confidence" kind="rating" scale={5} question="How confident are you in a rollback?" />
<WordCloud id="incident" question="One word for your last incident" />
Kind What people do
choice (the default) pick one option
multi pick any number of options
rating pick a number from 1 to scale (default 5)
words type a word or two; <WordCloud> is the same poll drawn as a cloud that grows as words repeat

Results show as they arrive. To keep them hidden until you close the poll, add liveResults={false}.

---
## Quick quiz
<Quiz
id="q-rollback"
question="Which change is safest to ship late on a Friday?"
options={["A schema migration", "A copy fix behind a flag", "A dependency upgrade", "A new cache layer"]}
correct={1}
seconds={20}
/>
---
## Leaderboard
<Leaderboard top={5} />

correct is the right option’s position counting from 0, so 1 is the second option. seconds is the time limit (default 20). Faster right answers score more points, under the nickname each person gives on the audience page (it is optional, and used for nothing else). <Leaderboard> adds up the scores of every quiz in the talk.

---
## Your questions
<Questions limit={5} />
<Reactions />
<Pace />
  • <Questions> shows the audience’s questions, most upvoted first; limit is how many (default 6). Each person’s upvote counts once.
  • <Reactions> puts the reaction bar on the slide: 👏 🔥 ❤️ 😂 🤯 👀 🙋 💡 float across every screen. The audience page always has the bar, whether or not a slide does.
  • <Pace> is a gauge of how many people tapped “too slow” or “too fast”.
  • <Presence /> shows how many people are following, wherever you put it.

Every component’s options are in the component reference; the live room page covers what each one does in the room.

Terminal window
npx kadal-deck check
npm run dev
Terminal window
pnpm exec kadal-deck check
pnpm dev
Terminal window
yarn kadal-deck check
yarn dev
Terminal window
bunx kadal-deck check
bun run dev

check catches a misspelt prop or a missing id. In the dev server, the poll shows “offline · 0 answers” and the quiz “ready”: there is no room yet, so nothing is sent. Step through the deck once with the presenter view open (S) and read your notes against each click.

To try a real room before the talk, publish the deck (next step) and open it on two devices.

Terminal window
npx kadal-deck login # once: approve the CLI in your browser
npx kadal-deck publish # prints https://decks.kadal.cc/@<you>/<slug>/
Terminal window
pnpm exec kadal-deck login # once: approve the CLI in your browser
pnpm exec kadal-deck publish # prints https://decks.kadal.cc/@<you>/<slug>/
Terminal window
yarn kadal-deck login # once: approve the CLI in your browser
yarn kadal-deck publish # prints https://decks.kadal.cc/@<you>/<slug>/
Terminal window
bunx kadal-deck login # once: approve the CLI in your browser
bunx kadal-deck publish # prints https://decks.kadal.cc/@<you>/<slug>/

The published deck has its own room. The presenter view and everything only a presenter may do (moving the deck, opening polls, drawing for everyone) are guarded:

  • On the deck’s page in the dashboard, Present and Presenter view open the deck with a presenter ticket that lasts 12 hours. This is the simplest way on your own laptop.
  • To present from a machine where you aren’t signed in, set a presenter passcode on the same page. The presenter view at …/presenter then asks for it once.
  1. Open the presenter view from the dashboard on your laptop.
  2. Click Share window and drag that window to the projector, or share it on the call. It shows the deck exactly as the audience sees it and ignores the keyboard, so a stray key press can’t move it.
  3. Click Start session in the toolbar. The session records the peak audience, questions, reactions and results for the stats; the button reads Live while it runs.
  4. Pair your phone as a clicker: Phone remote, then scan (see Present from your phone).
  5. On the poll’s slide, click Open on the poll (on the slide in the presenter view, or in the sidebar’s Polls tab). Phones show it at once. Close stops the voting; Reset clears it.
  6. On the quiz’s slide, Start opens it and starts its countdown on every phone. When the time is up (or you click Close), Reveal shows the right answer and the points.
  7. In the Questions tab, mark a question answered when you have taken it, or delete it.

The Room tab shows how many are watching, raised hands, reactions and which way the pace gauge leans. The sidebar folds to a rail with a badge for hands, open questions and open polls.

Click Live to end the session. Then:

  • /stats on the deck has views, time per slide, sessions, questions and reactions. It is for the presenter: opened in a new tab, it asks for the presenter passcode, or offers to sign in as the author, before it shows them;
  • the deck’s page in the dashboard has the same numbers, as far as your plan includes them, with CSV export on Pro and Team.

To let people read your notes after the talk, add audienceNotes: true to the headmatter and publish again: every slide’s notes then show on the audience page.

  • One idea per poll, four options at most: people answer on a small screen while you talk.
  • Open a poll, count to ten aloud, close it. Results that keep moving are hard to talk about.
  • Put <QrJoin> on the first slide and the last one, for people who arrive late or want the deck afterwards.
  • If the Wi-Fi is weak, everything still works on your screen; the room catches up when phones reconnect, and a phone that slept through a slide comes back in step.

Send feedback