Home
Beautiful slides from SVG. Your editor, your style.
Why Inkflow?¶
Every presentation tool makes you choose.
Visual editors (PowerPoint, Keynote, Google Slides) give you a canvas. Drag shapes, tweak spacing, iterate until it looks right. But your work lives in proprietary formats tied to a platform or subscription.
Code-based tools (Beamer, Slidev, reveal.js) keep everything as plain text. Diffable, version-controlled, editor-agnostic. But you describe layout in markup instead of drawing it. Creativity suffers when moving a box means editing a number.
Inkflow gives you both. Draw in any SVG editor. Keep everything in plain text.
How it works¶
- Draw each slide as an SVG. Use Inkscape, Figma, or any editor that exports SVG. No special markup, no plugin — draw exactly as you normally would.
- List your slides in
deck.py. A small Python file says which slides to show, in what order, and which elements animate or transition in. - Run
inkflow serve. A browser tab opens with your presentation. Save a change in your editor and it appears instantly, without losing your place.
That's the core loop — the rest is there once you need it: reusable layouts that inherit from each other like master slides, Markdown-filled zones for text-heavy slides, a presenter view with speaker notes, one-command export to static HTML or PDF, and more. Browse the guides or read Concepts for the full picture.
Quick example¶
from inkflow import Deck, Slide, animations, transitions
def main() -> Deck:
return Deck(slides=[
Slide("title.svg", animations=[
animations.FadeIn("#headline", step=1),
animations.FadeIn("#subtitle", step=2),
]),
Slide("diagram.svg", animations=[
animations.Bounce("#box-a", step=1),
animations.Bounce("#box-b", step=2),
], transition=transitions.Crossfade()),
Slide("summary.svg", transition=transitions.Morph(duration=0.7)),
])
Note
All guides are currently AI-generated drafts and may contain inaccuracies or incomplete information. I'll review them once the API stabilizes