Revela

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.statistics front-matter field, for example data.statistics = "camera-stats.json". The plugin then writes that file instead of statistics.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:

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