presentator
v1.7.1
Published
Zero-dependency Swiss/editorial HTML presentation generator. 12 layouts, 8 animations, canvas waves, cursor FX, KaTeX, Mermaid. JSON or Markdown input, single index.html output.
Maintainers
Readme
Presentator (Swiss Deck Gen)
Generated by AI because the author was too lazy to write a presentation framework by hand. Every line has been reviewed by a human with functioning eyeballs (yes I really did) and a healthy distrust of machines. Zero dependencies. Zero supply chain risk. Zero npm install. Zero excuses.
A self-contained HTML presentation framework with Swiss editorial design. You write JSON or Markdown. build.js spits out a single index.html. Open it. Present. Look smart.
Zero dependencies. Actually zero.
There is no "dependencies" field in package.json. Not even
devDependencies. The build uses only Node.js built-ins (fs, path).
The browser runtime uses only the Web Animations API (native in every
modern browser).
KaTeX and Mermaid are loaded from CDN at runtime but only when your deck actually uses math or diagrams. No math? No KaTeX. No diagrams? No Mermaid. You can host those JS files yourself if you want complete air-gap.
If you're worried about supply chain attacks on a presentation framework, breathe easy. There is no supply chain. It's just JavaScript files you can read in an afternoon.
Quick start
# JSON input (full control, all fields)
node build.js deck.example.json dist/index.html
open dist/index.html
# Markdown input (human friendly, YAML frontmatter)
node build.js deck.example.md dist/index.html
open dist/index.htmlWhat you get
- 12 layouts: title, split, metric-grid, eda-grid, card-row, quote, code, image-full, columns, agenda, timeline, video
- 8 animation recipes: hero, grid-reveal, split-statement, fade-in, slide-up, scale-in, stagger, none
- Canvas wave background: per-slide sine waves and particle networks.
Add
"background": "both"to any slide. Configurable per slide. - Cursor effects: custom dot + ring pointer, glow, trail, click ripple. All optional.
- KaTeX math: inline
$E=mc^2$and display blocks. CDN only when used. - Mermaid diagrams:
graph TDin slides. CDN only when used. - Pop-out presenter window: notes, timer, keyboard shortcuts.
- Fullscreen present mode: CSS-driven, works even when API is blocked.
- Click-to-reveal build steps:
data-stepelements reveal one at a time. - Slide transitions: slide, fade, or none. Configurable.
- Hash routing:
#1,#2in the URL jumps to that slide. - Auto-advance timer: set
"autoAdvance": 5000and slides advance automatically. Pauses on mouse/keyboard interaction. - Progress bar + slide counter: always visible position tracking.
- Grid overview: Esc to see all slides.
- 8 theme presets: light, dark, accent, slate, warm, cool, mono, nature. Plus a runtime dark/light toggle button.
- Configurable fonts:
"fontSans"and"fontMono"(default: Inter + Space Mono). - Configurable keyboard shortcuts: remap every key binding.
- Print/PDF export:
@media printstyles make Ctrl+P produce clean slides. - Video embeds:
{ "type": "video", "value": "https://..." }blocks. - External notes file:
"notesFile": "notes.json"loads speaker notes from a separate file. - Touch swipe: for tablets.
- Low-power mode: B key kills animations and canvas.
Configuration
{
"title": "My Deck",
"accentColor": "#002FA7",
"cursor": "both",
"transition": "slide",
"slides": [
{
"layout": "title",
"theme": "accent",
"background": "both",
"titleMain": "Hello"
}
]
}Files
build.js # CLI builder
skill-install.js # Install agent skill to ~/.agents/skills/
schema.json # JSON Schema draft-07
SPEC.md # Exhaustive reference
deck.example.json # 12-slide JSON demo
deck.example.md # 7-slide Markdown demo
package.json # Zero deps, MIT license
.agents/skills/ # Agent skill definition
src/
layouts.js # 11 layout renderers
theme.css # Styles, themes, canvas, print
deck-runtime.js # Nav, animations, canvas, cursor, transitions
animate.js # Standalone animation micro-library (WAAPI)
md-parser.js # Markdown + YAML frontmatter parser
test_check.js # Puppeteer test suite (optional)Install the agent skill
node skill-install.jsCopies to ~/.agents/skills/swiss-deck-gen/. Your agent discovers it automatically.
Who made this
An AI wrote the code (used my own Saddle model (coming soon) and deepseek v4 as a preliminary reviewer). The human (devsimsek) reviewed every line. If something breaks, blame the machine. If something is brilliant, credit the prompt.
License
MIT. Present to whoever you want. The framework doesn't care if your slides are good. That's on you.
