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 CSS-only LQIP 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.
- ⚡ 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 serveOpens your browser with a live preview. The Serve plugin ships built-in with the Standalone build; for the modular Full / .NET Tool builds, install it once with revela plugin install Spectara.Revela.Plugins.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 | dotnet tool install -g Spectara.Revela |
| From Source | Contributors | See Setup Guide |
Standalone has all of these built in. Full / .NET Tool installs them on demand:
| Plugin | Description |
|---|---|
| Compress | Pre-compress static files with Gzip/Brotli |
| Serve | Local dev server with live preview |
| Statistics | EXIF statistics page (camera bodies, lenses, focal lengths) |
| Calendar | Calendar/timeline pages built from gallery dates |
| Source.OneDrive | Import from OneDrive shared folders |
| Source.Calendar | Import events from iCal feeds |
revela plugin install Spectara.Revela.Plugins.ServeAnd 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.
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
- CSS-only LQIP — blur placeholder technique by Lean Rada
