Statistics
The Statistics plugin analyzes EXIF data from your photos and generates statistics pages showing camera usage, lens preferences, aperture distribution, and more.
Overview
๐ท EXIF Analysis
Camera models, lenses, aperture, ISO, shutter speed, focal lengths, and orientation.
๐ Dashboard
Pure-CSS bar charts with overview cards, no JavaScript required.
๐ Timeline
See how your photography evolves over time, broken down by year and month.
Installation
The Standalone edition has the plugin and the theme extension built in, so there's nothing to install.
In the Full edition, the Statistics feature has two parts:
# 1. The plugin (generates statistics data)
revela plugin install Statistics
# 2. The theme extension (renders charts), recommended; it is a theme package
revela theme install Lumina.Statistics
The plugin generates a statistics.json data file. The Lumina.Statistics extension renders that data as a responsive dashboard with pure-CSS bar charts that inherit the Lumina color scheme.
Without the theme extension, statistics data is still generated, but you'll need custom templates to display it.
Creating a Statistics Page
# Create a statistics page in your source
revela create page statistics
This creates a page with the statistics template:
+++
title = "Photo Statistics"
description = "EXIF statistics from your photo library"
template = "statistics/overview"
+++
The plugin treats any page whose template starts with statistics/ as a statistics page: it aggregates EXIF data from the manifest and writes a data file to .revela/statistics/<page-path>/statistics.json for the theme to render.
Advanced: instead of the statistics template, you can point an existing page at a data file explicitly with a
data.statisticsfront-matter field, for exampledata.statistics = "camera-stats.json". The plugin then writes that file instead ofstatistics.json. The name must be a plain file name ending in.json, without folders; otherwise the statistics step stops with a hint.
Generating Statistics
# Generate statistics as part of the full pipeline
revela generate all
# Or run only the statistics step
revela generate statistics
The pipeline order is: scan โ calendar โ statistics โ pages โ images. Statistics runs after scan (which collects EXIF data) and before pages (which renders the HTML).
What Gets Analyzed?
| Category | Description | Example |
|---|---|---|
| Cameras | Camera body models | Sony ILCE-7M4, Canon EOS R5 |
| Lenses | Lens models | Sony FE 35mm F1.4 GM |
| Focal Lengths | Bucketed by range | 18โ35, 35โ70, 70โ135 |
| Apertures | f-stop distribution | f/1.4-2.0, f/2.8-4.0 |
| ISO | Sensitivity ranges | ISO 100-400, ISO 800-1600 |
| Shutter Speeds | Exposure times | 1/500, 1/250, 2s |
| Orientation | Image dimensions | Landscape, Portrait, Square |
| Timeline | Photos per year | 2024: 120, 2023: 80 |
| Monthly | Photos per month | January: 45, July: 82 |
Images without EXIF data are counted in the totals but excluded from category breakdowns.
Configuration
Settings are stored in project.json below plugins.statistics:
{
"plugins": {
"statistics": {
"maxEntriesPerCategory": 15,
"sortByCount": true
}
}
}
| Option | Default | Description |
|---|---|---|
maxEntriesPerCategory |
15 |
Top N entries per category (0 = unlimited). Remaining entries are aggregated into "Other". |
sortByCount |
true |
Sort by count (descending) instead of natural order |
# Configure interactively
revela config statistics
# Or set specific options (needed in scripts and CI, where Revela doesn't prompt)
revela config statistics --max-entries 20 --sort-by-count false
config statistics writes project.json, so run it inside your project.
The same settings can be supplied as environment variables:
SPECTARA__REVELA__PLUGINS__STATISTICS__MAXENTRIESPERCATEGORY=20
SPECTARA__REVELA__PLUGINS__STATISTICS__SORTBYCOUNT=false
Theme Extension
Lumina.Statistics provides a single-page dashboard with:
- Overview cards: total images, galleries, cameras, and lenses at a glance
- Bar charts for all 9 categories using pure CSS (no JavaScript)
- Responsive layout: the grid adapts from mobile to desktop
- Dark/light mode: inherits Lumina's color scheme automatically
- Hover effects: bar highlight and count display on interaction
Install it alongside the plugin (Full edition only; Standalone has it built in):
revela theme install Lumina.Statistics
CLI Commands
| Command | Description |
|---|---|
revela generate statistics |
Generate statistics JSON |
revela generate all |
Full pipeline (includes statistics) |
revela clean statistics |
Remove generated statistics files |
revela config statistics |
Configure plugin settings |
Requirements
- Photos with EXIF data (JPG, TIFF โ most cameras write EXIF by default)
- Run
revela generate scanfirst (or usegenerate all)