Addon architecture
SliDesk has four addon systems that let you extend presentations without modifying the core.
Layers
Presentation (main.md)
│
├── Themes │ CSS + JS (visual layer)
├── Templates │ HTML layout (structure layer)
├── Components │ .mjs transforms (build-time layer)
└── Plugins │ Front & back-end hooks (runtime layer)
Themes
Themes bundle CSS, JS, templates, and plugins. They are the highest-level addon and can include any of the other types. Themes are placed in themes/ and auto-load.
Templates
Templates are .sdt files that define the HTML structure of a slide. They use <sd-title />, <sd-content />, and <sd-block /> placeholders. Slide content is injected into these placeholders at build time.
Components
Components are .mjs files that transform the full slide HTML at build time. They receive the generated HTML and return modified HTML. This is useful for custom syntax like !component().
Plugins
Plugins hook into the presentation at runtime. Front-end plugins inject scripts, styles, and HTML. Back-end plugins add HTTP routes and WebSocket handlers to the server.
Hub (slidesk.link)
All four addon types can be shared via the hub at https://slidesk.link. The CLI commands (slidesk plugin push, slidesk theme push, etc.) handle publishing and discovery.