How SliDesk works
SliDesk is a talk engine built on Bun. It converts Markdown into a web-based presentation served over HTTP.
Architecture
main.sdf / main.md
│
▼
┌─────────────┐
│ Builder │ Parses Markdown → HTML slides
└──────┬──────┘
│ slides HTML
▼
┌─────────────┐
│ Server │ HTTP + WebSocket server
└──────┬──────┘
│
┌────┴────┐
│ │
▼ ▼
Browser Terminal
(slides) (telnet)
Builder
The builder reads main.sdf or main.md, parses it with bun, processes components, applies templates, resolves !include() directives, and generates the final HTML for each slide.
Server
The HTTP server serves the presentation and speaker view. A WebSocket connection provides live reload when files change and communication between the presentation and speaker view.
Only the speaker drives the talk over the WebSocket: pages opened on the speaker's machine, or carrying the token of the speaker view URL printed in the terminal. Every other viewer only follows. Messages addressed to a server plugin stay open to everyone.
File watcher
SliDesk watches the talk directory for changes. When a file is modified, the browser refreshes automatically via WebSocket.
Speaker view
The speaker view runs on a separate page (/notes.html) and communicates with the presentation view via WebSocket. It shows the current slide, next slide, timer, and speaker notes.
Telnet server
An optional telnet server lets you control the presentation from any terminal, useful when presenting remotely or on minimal setups.