Create, edit, present, and export technical presentations from a Git-friendly workspace. Bring your ideas, your Markdown, and perhaps a comforting beverage.
Revealation is a web-based editor for creating technical reveal.js presentations. The presentation source is human-readable Markdown. A workspace stores slide content in deck.md, project metadata in deck.json, and media or other resources as ordinary files with relative paths. This makes presentations easy to edit, move, back up, and version with Git.
Under development: Revealation is an actively developed alpha project. Features, storage behavior, and deployment workflows may change, and it is not yet recommended as the only copy of important presentations. See the release limitations before relying on it.
Prompted with passion and lack of time, Revealation began as a “let’s see what we can get with AI over the weekend” project. Naturally, it spiraled out of control and became a real slide editor.
I have not looked at 99% of the code. I am, however, actively using it and polishing its rough edges iteratively ... which is either a development methodology or just an avoidance strategy.
The end goal is simple: finally have full control over my slides without going insane while writing them. Revealation is deliberately heavily opinionated and limited in customization by choice, partly because good defaults are lovely and partly because I have seen some dreadful PowerPoint abominations.
The project is based on Small Reveal, which showed me what was possible and gave this weekend experiment somewhere wonderful to start. Markdown is the secret ingredient. It makes conversations with AI dramatically easier: the source is readable, portable, diffable, and much less mysterious than a pile of presentation-editor internals.
- Visual slide editing with a whole-deck Markdown editor
- Full-screen Present mode directly from the editor and browser-based PDF export
- Subslides,
::: notesspeaker notes, fragments, presentation-wide transitions, and curated slide backgrounds - Curated light/dark presentation themes with a manifest-based theme extension API
- Protected single- and multi-block layouts with custom layout extensions
- Local images, video, audio, and iframe-backed interactive content
- Syntax-highlighted code and LaTeX equation editing
- Workspace file browser and relative asset paths
- Installable PWA mode with direct access to a user-selected local presentation folder on supported browsers
- Import and export for
.revealationpresentations, Markdown, standalone HTML, and PDF - Responsive editor layout for desktop and mobile screens
The recommended way to use Revealation is the hosted, installable PWA. Open
the online version over HTTPS, choose
or create a presentation folder, and optionally install it from the browser.
On supported Chromium-family browsers the PWA uses the File System Access API
for local presentation folders; other browsers retain browser-storage fallback.
See docs/PWA_DEPLOYMENT.md for self-hosting and
GitHub Pages deployment.
For development or an offline local fallback, use the Python workspace server. It requires Python 3 and a modern browser:
./start.sh /path/to/presentationThen open http://127.0.0.1:8000/ in a browser. If no directory is supplied, the current directory is used. A temporary workspace is useful for development:
./start.sh /tmp/revealation-workspaceNo Node.js, npm, database, or Python packages are required for normal use.
For the alpha release, Chromium-family browsers are preferred for local-folder PWA access. Standalone HTML cannot reliably bundle complex interactive apps, and PDF export depends on the browser's native Print → Save as PDF dialog. See the complete release limitations.
A typical presentation project looks like this:
presentation/
├── deck.md
├── deck.json
├── assets/
│ ├── diagram.svg
│ └── example.png
├── media/
│ └── clip.mp4
└── interactive/
└── example/
├── index.html
├── app.js
└── style.css
deck.md is the source of truth for slide content. deck.json stores project metadata and editor state; it does not replace the Markdown document. Assets remain regular files and are referenced using paths relative to the workspace.
Most content uses ordinary Markdown. Revealation adds small, readable directives for presentation-specific structures:
--- layout=two-columns
::: block
## Main point
Text, lists, code, equations, and images.
:::
::: block align=center
{width=70%}
:::See docs/MARKDOWN.md, docs/LAYOUTS.md, and docs/THEMES_AND_BACKGROUNDS.md for the complete syntax and extension rules.
The docs/ directory contains the detailed documentation:
docs/README.md— documentation indexdocs/DEVELOPMENT.md— development workflow and where to make changesdocs/ARCHITECTURE.md— source-tree responsibilities and boundariesdocs/MARKDOWN.md— Markdown format and directivesdocs/LAYOUTS.md— built-in layouts and extension APIdocs/THEMES_AND_BACKGROUNDS.md— curated themes, design tokens and background extensionsdocs/INTERACTIVE.md— interactive contentdocs/PDF_EXPORT.md— PDF export behaviordocs/RELEASE_LIMITATIONS.md— alpha release limitations and export/deployment caveatsdocs/PWA_DEPLOYMENT.md— static/PWA deployment, updates and local-directory accessTHIRD_PARTY_NOTICES.md— vendored libraries, versions, licenses, and source linksdocs/TESTING.md— checks and smoke testsdocs/COMPATIBILITY_DEBT.md— temporary internal compatibility paths scheduled for removal before public release
Historical notes, architecture decisions, and preserved upstream material are also kept under docs/.
Revealation has no mandatory development build system. Edit the source, reload the browser, and run the checks before packaging:
./tests/check.shThe dependency-free checks always run. If chromium is available, the command
also runs the headless Chromium regression suites; otherwise
those browser tests are skipped. See docs/TESTING.md for
the browser-test commands and prerequisites.
Source code is organized by responsibility under src/. Explicit extension registrations live under extensions/; built-in theme packages live under themes/. ./scripts/build-pages.sh is a deployment-only assembly step that creates the static PWA artifact in dist/; it does not bundle or transform the browser source.
Revealation started from Small Reveal by Mark Sample. The original MIT license and attribution are preserved; Revealation adds the filesystem workspace, layout, interactive-content, and export features. Unfortunately, the projects are not compatible anymore due to heavy divergence, but Small Reveal remains a wonderful reference for reveal.js usage and design.