Statistics
The Statistics plugin analyzes EXIF data from your photos and generates statistics pages showing camera usage, lens preferences, aperture distribution, and more.
📷 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 Statistics plugin has two parts:
# 1. The plugin (generates statistics data)
revela plugin install Statistics
# 2. The theme extension (renders charts) – recommended
revela plugin install Theme.Lumina.Statistics
The plugin generates a statistics.json data file. The Theme.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 required frontmatter:
+++
title = "Statistics"
template = "statistics"
data = { statistics = "statistics.json" }
+++
The data.statistics field tells the plugin where to write the JSON data file.
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 → 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:
{
"Spectara.Revela.Plugin.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
revela config statistics --max-entries 20 --sort-by-count false
Theme Extension
Theme.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 — 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:
revela plugin install Theme.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)