Repolode
SmilyOrg

SmilyOrg/photofield

Self-hosted single-binary photo gallery in Go and Vue, built to display many photos at once without touching the original files.

Open-source alternative to:Google Photos

Stars
616
Forks
19
Open issues
38
Last commit
25 days ago

What is it?

Photofield is a photo viewer built to show as many photos as possible on screen at once, and to display them quickly. It runs as a single static Go binary or a Docker image, and it treats the file system as the source of truth. Originals are never modified, and the app keeps a SQLite cache of thumbnails and metadata. Collections are created from directories, and an optional timeline layout works similarly to Google Photos.

The interface is zoomable everywhere and loads layouts progressively, starting from low-resolution previews. Indexing, EXIF extraction and dominant color detection run as separate steps. Optional integration with photofield-ai adds semantic search, face detection and tagging, and reverse geolocation is embedded locally.

The project has no user accounts or authorization, and it is not designed for many simultaneous clients. Its state lives on the server, so it suits a single household or personal library.

Key features

  • 01Zoomable interface with progressive multi-resolution loading
  • 02Multiple layouts, including a timeline view
  • 03Optional semantic search, face detection and tagging via photofield-ai
  • 04Read-only, non-invasive handling of original files
  • 05Fast file indexing with EXIF and prominent color extraction as follow-up steps
  • 06Deployable as a single binary or Docker image

Use cases

  • Browsing a large personal photo library stored on a NAS or home server
  • Running a read-only gallery over an existing photo directory alongside other tools
  • Replacing a cloud timeline view with a self-hosted alternative for a single household

Quick start

  1. 1

    Run the Docker container with your photos mounted read-only

    docker run -p 8080:8080 -v "$PWD/data:/app/data" -v "$PWD/photos:/app/photos:ro" ghcr.io/smilyorg/photofield
  2. 2

    Open http://localhost:8080 in your browser to view the photos collection

Things to know

  • Not optimized for many simultaneous clients; state is kept on the server, so CPU and memory may struggle with more than a few users.
  • No user accounts, authentication or authorization support.
  • Initial layout of a collection can be slow on slow CPUs or cold disk caches.
  • Tagging and face detection are still in alpha.

In collections

Topics

FAQ

What is photofield?
Self-hosted single-binary photo gallery in Go and Vue, built to display many photos at once without touching the original files. Photofield is a photo viewer built to show as many photos as possible on screen at once, and to display them quickly. It runs as a single static Go binary or a Docker image, and it treats the file system as the source of truth. Originals are never modified, and the app keeps a SQLite cache of thumbnails and metadata. Collections are created from directories, and an optional timeline layout works similarly to Google Photos.
Is photofield free to use? What license does it have?
photofield is open source under the MIT license. Check the license terms before using it in commercial products.
Is photofield still maintained?
Actively maintained. The last commit to photofield was on Oct 12, 2026.
What can I use photofield for?
Browsing a large personal photo library stored on a NAS or home server Running a read-only gallery over an existing photo directory alongside other tools Replacing a cloud timeline view with a self-hosted alternative for a single household
How do I install photofield?
Run the Docker container with your photos mounted read-only: docker run -p 8080:8080 -v "$PWD/data:/app/data" -v "$PWD/photos:/app/photos:ro" ghcr.io/smilyorg/photofield Open http://localhost:8080 in your browser to view the photos collection
Where can I get photofield?
The source code and installation instructions are on GitHub: https://github.com/SmilyOrg/photofield

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects