Reveal your stories through beautiful portfolios
Modern static site generator for photographers — fast, beautiful output, no quality trade-offs. Built with .NET 10.
🌐 revela.website — Documentation & Demo
Note
Beta · active development, breaking changes possible. Versioned releases are available from GitHub Releases.
- 🖼️ Modern Image Formats — JPEG by default, AVIF and WebP available with one config flag (off by default because they're CPU-heavy to encode). Responsive sizes and average-colour placeholders included.
- 🧙 Interactive Wizards — Project setup, theme picker, plugin install — no manual config files.
- 🔌 Plugin System — Compress, Serve, Statistics, Calendar, Source.OneDrive, Source.Calendar.
- 🎨 Themes — Lumina (+ Statistics and Calendar extensions). Customize via overrides instead of forking.
- 🌐 Your Language — The theme's own text (navigation, labels, 404 page, dates) follows
languageinsite.json. English and German are included; add another language with one JSON file. - ⚡ Fast — Powered by libvips (NetVips), parallel processing, change detection.
- 📊 Lighthouse-friendly — photo.kirk.one (built with Revela) scores 100/100/100/100 with FCP 0.2 s, LCP 0.3 s, zero blocking time, zero layout shift.
Grab the Standalone build for your platform from the Releases page — a single self-contained binary, no .NET SDK needed.
- Windows: unzip and double-click
revela.exe - macOS / Linux: extract and run
./revela(or use the included launcher script)
The interactive wizard walks you through the rest.
The project wizard appears automatically and asks for:
- Project settings — Name and URL
- Theme selection — Choose your look
- Image settings — Default is JPEG only (AVIF and WebP can be flipped on later in
project.json) - Site metadata — Title, author, copyright
Create folders in source/ — folder names become gallery titles:
source/
├── 01 Weddings/
│ └── *.jpg
├── 02 Portraits/
│ └── *.jpg
└── 03 Landscapes/
└── *.jpg
Select generate → all from the menu (or run revela generate all):
Processing images [████████████████████] 100% 47/47
Rendering pages [████████████████████] 100% 12/12
✓ Generation complete!
revela serveStarts a local static preview server at http://localhost:8080 — open that URL in your browser. It does not open a browser, watch files, or reload pages: after changes, run revela generate all again and refresh. The Serve plugin ships built in with the Standalone build; in the modular Full build, install it once from the bundled packages with revela plugin install Serve.
| Method | Best For | Where |
|---|---|---|
| Standalone | Most users — single binary, all plugins built in | Download |
| Full | Want to add custom plugins, manage them via NuGet | Download |
| .NET Tool | You already have the .NET 10 SDK | .nupkg from GitHub Releases (see below) |
| From Source | Contributors | See Setup Guide |
Important
Revela packages are not published on NuGet.org yet. Every package, including the Spectara.Revela .NET tool, is attached to each GitHub Release. To install the tool, download Spectara.Revela.<version>.nupkg into a folder and run:
dotnet tool install -g Spectara.Revela --version <version> --add-source ./downloadsStandalone has all of these built in. The Full build installs them on demand from its bundled packages/ folder:
| Plugin | Description |
|---|---|
| Compress | Pre-compress static files with Gzip/Brotli |
| Serve | Local static preview server (no live reload) |
| Statistics | EXIF statistics page (camera bodies, lenses, focal lengths) |
| Calendar | Availability calendar (booked/free days) from iCal .ics files |
| Source.OneDrive | Import from OneDrive shared folders |
| Source.Calendar | Download iCal feeds (e.g. booking exports) into the source folder |
revela plugin install ServeWith the .NET tool there is no bundled folder: download the .nupkg files from the release and register that folder once with revela config feed add releases ./downloads.
And three theme packages: Lumina (default), Lumina.Statistics, Lumina.Calendar.
Visit revela.website/docs for the full documentation:
- Source Structure — Organize photos with galleries or filters
- Filter Galleries — Dynamic galleries with EXIF queries
- Sorting — Configure image and gallery order
- Creating Pages — Gallery, text, and statistics pages
- Theme Customization — Extract and customize themes
Offline/GitHub: docs/ folder contains the same documentation in Markdown.
Want to build a plugin, create a theme, or understand how Revela works internally? The developer documentation lives right here in the repo, next to the code:
- Plugin Development — build, configure, test, and publish a plugin
- Architecture — built-in features, plugins and package loading
- Security Model — trust assumptions and URL-safety guardrails
- Architecture · Project Structure · Development Guide
Build from source:
git clone https://github.com/spectara/revela.git
cd revela
dotnet build
dotnet run --project src/CliContributions welcome! Please open an issue or pull request.
- Expose by Jack Rugile — the original Bash-based static gallery generator that started this whole idea
- Expose (fork) — the predecessor of this project, also Bash-based
- libvips — image processing
- Scriban — templates
