Presentation studio

Skaldoria

Write your talk in Markdown. Deliver it like a storyteller.

A native presentation studio for Windows, macOS and Linux built with Kotlin Multiplatform and Compose Desktop. Decks are plain Markdown; delivery gets a presenter console, a phone remote, live audience polls and Q&A, and pacing that tells you whether you are on schedule.

  • Kotlin Multiplatform
  • Compose Desktop
  • Markdown
  • Embedded HTTP server
  • Windows / macOS / Linux
License: MIT
deck.md
# Why we moved to PostgreSQL queues
<!-- pace: 90s -->

- One database, one backup, one source of truth
- No separate broker to run

<!-- poll: Kafka | RabbitMQ | PostgreSQL -->

What it does

01

Story over menus

Write the whole deck in standard Markdown; the Markdown is also the storage for questions captured during the talk.

02

Speaker rhythm

Compares the clock with the budget your deck declares per slide, and shows on track, ahead, behind or overtime.

03

Live audience

In-slide polls with real-time bar charts, and an audience Q&A stream with upvotes, from any phone on the network.

04

Phone remote

A built-in companion server: next and previous, notes, timer and blackout from your phone, paired by QR code.

05

Native diagrams and maths

Mermaid flowcharts, sequence and Gantt diagrams and LaTeX formulas rendered natively, with no browser or network.

06

Offline export

Export a deck to a single self-contained HTML file, ready for print-to-PDF.

How it's built

One shared engine, a desktop app and a companion server:

  1. Engine

    Markdown parsing, layout classification, the LaTeX engine and native Mermaid rendering (layered graph layout).

  2. Studio

    Compose Desktop editor and presenter console, rendered at up to 120 FPS.

  3. Companion

    Embedded HTTP server with a speaker remote and an audience portal, with separate permissions.

  4. Export

    Standalone HTML with maths and diagrams pre-rendered, and PDF via headless Chrome or Edge when available.

Engineering highlights

  • Speaker and audience links are separated: only the speaker token can drive the deck or read notes, compared in constant time.
  • Audience input is never trusted: rendered as text, length-capped and rate-limited, one ballot per device.
  • A WCAG 2.1 AA contrast enforcer adjusts theme colours to reach a 4.5:1 contrast ratio.
  • The same repository holds sibling apps on the shared engine: a writer, a canvas and a CV editor with ATS-ready PDF export.
  • 955 tests across every module.

Quick start

Terminal
git clone https://github.com/esgaltur/skaldoria.git
cd skaldoria
./gradlew :skaldoria-presentation:run

The full documentation is in the repository on GitHub.

More projects