Skip to content

Pages and URL parameters

A deck is one small web app with several pages, all in the same build. In development they are under http://localhost:5173/; a published deck has them under https://decks.kadal.cc/@<handle>/<slug>/. <slug> below stands for wherever the deck is served. Generated from the catalog of @kadal/deck 0.10.0.

Path What it is
/<slug>/ The deck. #/h/v/click or #/<slide-id> addresses a slide and step.
/<slug>/presenter Presenter view: current + next slide, notes with click markers (click one to jump to its step; Edit under kadal-deck dev), a stopwatch or countdown timer with pause, reset, progress and pacing, tools, the room panel.
/<slug>/join The audience page (also /audience): follow along, react, ask, vote.
/<slug>/remote The phone remote: next/back, blackout, focus labels, a slide list, pen, zoom, a laser aimed by touch on a live copy of the slide or by moving the phone, the notes for this step, the timer and a wake lock. Paired from the presenter view’s Phone remote QR, a one-time code that changes every 30 seconds: remote#pair=CODE with a room, remote?pair=CODE on kadal-deck dev or a kadal-deck relay (plus &relay=… when the presenter view was pointed at the relay by its address). One phone at a time; the newest to scan takes over. Pass remote: RemotePage (from @kadal/deck/remote) in <Deck pages>.
/<slug>/notes Every speaker note on one page, following the presenter: the current part marked, markers jump to their step; editable per slide under kadal-deck dev.
/<slug>/teleprompter The teleprompter: this slide’s notes alone, big, in a window for another screen, following the presenter’s slide and step (the current part on a reading line a third of the way down, earlier parts dimmed, the next slide’s first lines below). Opened from the presenter view’s Teleprompter button (a menu of this computer’s screens where the browser can place windows), Shift T or present.teleprompter. Text size, line width, mirror for a prompter’s glass, a reading guide, auto-scroll (Space, ↑ ↓ speed), light or dark, fullscreen; a strip with the slide, the presenter’s timer and pace, and the room’s hands, pace votes, viewers and open questions. It does not join the room. Every deck has it.
/<slug>/notes-edit The batch notes editor: every slide’s notes as Markdown on one scrolling page, saved into deck.mdx as you type (kadal-deck dev, or a host’s notesEditor; read-only elsewhere).
/<slug>/overview Every slide in order with a slider through its click steps and its notes beside it (editable under kadal-deck dev); a thumbnail opens the deck at that step.
/<slug>/export The browser exporter, on every deck (hosted ones too; no Playwright): PDF through the browser’s print of the print view, a zip of PNGs, an image-per-slide PPTX file with the notes, or Markdown with the PNGs. Range, a page per click step, colour scheme, notes, picture size and a transparent background, with a live preview, progress and Cancel.
/<slug>/stats Views, dwell per slide, sessions, questions, reactions.
/<slug>/<your-path> A page of the deck’s own: routes.tsx beside deck.mdx (or src/routes.tsx, setup/routes.ts) exporting defineRoutes([{ path: "handout", component: Handout }, { path: "q/:id", load: () => import("./Q.tsx"), title }]), <Deck routes>, or a theme’s or addon’s routes / api.addRoute(). Drawn inside the deck’s providers with { path, params, route }; the engine’s pages win a clash; the build copies index.html to each plain path for static hosts.
/<slug>/__kadal/drawings kadal-deck dev only: GET every drawings/*.svg; PUT { file, svg } writes one (same origin, JSON; the SVG is re-serialised, never written as sent) and tells every open page. Used by drawings.persist: "files".
Parameter What it does
?print-pdf Every slide (and click step) as a printable page; what export drives. Also ?print=pdf.
?range=1,3-5 With ?print-pdf: only those slides (1-based, in play order; 8- runs to the end).
`?clicks=0 1`
`?notes=0 1
?omit-background With ?print-pdf: no page colour and no background layer (transparent PNGs).
`?scheme=light dark`
?view=scroll Read the deck as a scrolling page (?view=slide forces the stage).
?presenter Open as presenter.
?embedded Embedded mode: no global key handling.
?projector A look-only window for a second screen or a call: follows the presenter, ignores input.
?narrate Show the narration bar on the deck itself, to rehearse on the main screen (R does too).
?at Marks a link as being ABOUT its slide (share links): lands there instead of following.

Send feedback