Skip to main content

Trailframe

GitHub Release GitHub Activity License

A self-hosted photo gallery for people who move: photos and GPS activities (Garmin Connect / GPX) live side by side, linked by time and place. One server hosts everything — a FastAPI backend that also serves its web UI.

Gallery view

Photo library

  • Automatic ingestion of a photo folder, with EXIF capture (camera, date, GPS) on import.
  • Multi-size thumbnails generated and cached per photo; sizes are configurable.
  • Favorites — mark photos you love and find them instantly; favorite-only views everywhere.
  • Automatic groups — related photos are clustered so bursts and series stay together.
  • Filter and combine by date range, group, location, tags, and favorites.

Activities

  • Import activities from Garmin Connect or GPX files.
  • Every activity gets a trace map; photos taken during the activity appear alongside it.
  • Interactive map with selectable traces and popups showing distance, duration, and time.

Garmin activities

Slideshows

  • Slideshow sources: an activity (photos + trace), a group, or a fully custom selection.
  • Custom slideshows support date ranges, groups, locations, tags, randomization, and favorites-only.
  • Thumbnail mode renders slides from cached thumbnails instead of full images — smooth playback even for large libraries, with the size chosen automatically from the available screen space.
  • Standalone kiosk entry (/slideshow.html) with deep-linkable URLs for dedicated screens.
  • ZIP export of an activity's photos.

Slideshow with activity trace Slideshow photo view

Enrichment pipelines

Photos are processed by pluggable scanners:

Scanner What it does
File Registers the file (name, size)
EXIF Extracts camera metadata, dates, and GPS position
Thumbnail Generates all configured thumbnail sizes
Activity Links photos to imported activities
Brisque Scores image quality
Location Resolves GPS coordinates to places and countries
Object Detects objects in photos (YOLO models, downloaded automatically)
PerceptualHash Fingerprints images for duplicate/near-duplicate grouping

Scanners can be force re-run individually from the Tools page — e.g. regenerate all thumbnails after changing their sizes.

Maps

  • Wireframe maps of your photo coverage and per-photo location maps.
  • Built-in tile cache/proxy: tiles are fetched once from the configured provider and served locally afterwards.

Tools map with activity traces

Statistics

  • Per-scanner throughput (items processed and speed).
  • Storage overview: database size plus disk usage of every data folder.

Install

A wheel is attached to every release: download the latest trailframe-…-py3-none-any.whl and install it with pip (Python 3.12 or newer):

pip install trailframe-…-py3-none-any.whl

All Python dependencies are pulled in automatically; the web UI is bundled inside the wheel.

Running

Run the trailframe command from the folder where all data (database, thumbnails, caches, trash) should live:

trailframe --config path/to/config.yaml

(python -m trailframe.main is equivalent.) The server listens on port 8000 by default; open http://localhost:8000. On first start a default config.yaml is written to the current directory.

From source

Build the web UI once (npm install && npm run build inside frontend/), then start the server from the repository root:

python supervisor.py --config path/to/config.yaml

The supervisor restarts the server whenever it exits and forwards SIGTERM/SIGBREAK to it. To build a wheel yourself, build the web UI first, then run pip wheel ..

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trailframe-0.1.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trailframe-0.1.1-py3-none-any.whl (623.7 kB view details)

Uploaded Python 3

File details

Details for the file trailframe-0.1.1.tar.gz.

File metadata

  • Download URL: trailframe-0.1.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for trailframe-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4cc6ae62f2433997b6a5b800548ef1beb47dd14aec3e707ae4a03b4fbc9d095b
MD5 452e6523aad14c8e7d1c1bb85dd32fc7
BLAKE2b-256 53b4809bea4978e279fb7d35e6fd0f2d1682d1ac0778b7550a1c79b442ba2e6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for trailframe-0.1.1.tar.gz:

Publisher: publish.yml on Sildra/trailframe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trailframe-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: trailframe-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 623.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for trailframe-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e507438222b57b391872e1e2e55a45bbe3e0e576b56f3961b851dc5ae24f8a91
MD5 7d0ff0e9c0129b77125433556700773b
BLAKE2b-256 717730091349c45a0422f0e2f75f21a452fb1942a08ac5e977863e7441a44c8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for trailframe-0.1.1-py3-none-any.whl:

Publisher: publish.yml on Sildra/trailframe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page