Skip to content

FNNDSC/slidedown

Repository files navigation

Slidedown

Slidedown is a text-first presentation compiler. You write a plain text .sd file with simple .directive{content} markup, and slidedown compiles it to a browser-based HTML presentation.

It is meant for people who want slide decks that behave more like source code: diffable, scriptable, easy to version, and still capable of presentation effects such as progressive reveals, typewriter text, code highlighting, themes, and custom CSS.

View the README as an interactive presentation — pick a theme:

Theme Live Demo
conventional-light https://fnndsc.github.io/slidedown/readme-presentation/
default https://fnndsc.github.io/slidedown/themes/default/
lcars-lower-decks https://fnndsc.github.io/slidedown/themes/lcars-lower-decks/
retro-terminal https://fnndsc.github.io/slidedown/themes/retro-terminal/
terminal https://fnndsc.github.io/slidedown/themes/terminal/

Quick Start

Slidedown is primarily managed through its Makefile. That path assumes your system has make available.

On Linux and macOS, make is usually available through the system package manager or developer tools. On Windows, use WSL, MSYS2, Git Bash, or another environment that provides GNU Make. The Makefile also detects Android/Termux and uses pip there instead of uv pip.

From a fresh checkout:

make dev

Compile and serve an example deck:

make presentation SOURCE=examples/minimal/minimal.sd

The first command creates .venv and installs slidedown in editable mode. The second command compiles the deck and serves it at:

http://localhost:8000

Compile without serving:

make compile SOURCE=examples/minimal/minimal.sd

Serve an already compiled deck:

make serve SOURCE=examples/minimal/minimal.sd

Change the theme or port:

make presentation \
  SOURCE=examples/watermarked/light-watermarks-demo.sd \
  THEME=conventional-light \
  PORT=9000

See all Makefile targets:

make help

If you are on a system without make, the equivalent manual path is:

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/slidedown examples/minimal/ output/ \
  --inputFile minimal.sd \
  --theme conventional-light
cd output/
python3 -m http.server 8000

Minimal Example

.slide{
  .title{Hello Slidedown}
  .body{
    .typewriter{> Welcome...}

    .bf{Why use it?}
    .o{Text-first authoring}
    .o{Progressive reveal bullets}
    .o{Browser-native presentation output}
  }
}

Core Syntax

Slidedown content is built from directives:

.directive{content}
.directive{.modifier{value} content}
.directive{nested .directives{work} too}

Common structural directives:

  • .slide{} defines one slide
  • .title{} defines the slide title
  • .body{} defines the visible slide content

Common formatting and behavior directives:

  • .bf{} bold text
  • .em{} italic text
  • .tt{} monospace text
  • .code{} highlighted code block
  • .typewriter{} typing animation
  • .o{} progressive reveal bullet/snippet

Themes

Use --theme to select a theme:

slidedown input/ output/ --inputFile deck.sd --theme retro-terminal

Included themes:

  • conventional-light
  • default
  • terminal
  • retro-terminal
  • lcars-lower-decks

Deck Metadata

Use .meta{} for deck-wide settings:

.meta{
  title: "Demo Deck"
  typography:
    baseline: presentation
  snippets:
    marker: "-> "
}

Typography baselines include compact, normal, large, xlarge, and presentation. For per-slide tuning, add a density class:

.slide{.class{dense}
  .title{Detailed Slide}
  .body{
    Dense slides fit more content while preserving presentation scale.
  }
}

Supported density classes are hero, roomy, dense, and compact.

Documentation

Development

Run the checks:

make lint
make typecheck
make test

Useful development targets:

make format
make clean
make purge
make readme-presentation

Project conventions:

  • Python code uses explicit type hints
  • Python lines stay under 80 columns
  • Public docstrings use Google-style Args and Returns sections
  • Internal names prefer RPN-style object_verb naming where practical

License

Slidedown is released under the MIT License. See LICENSE.

About

Text-first presentation compiler with .directive{} syntax

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors