Skip to content

FoldergramLocal-first photo and video gallery for folders

Browse folders you already own through a fast feed-style interface backed by SQLite, generated thumbnails and previews, and a local-only runtime.

Foldergram Logo

Foldergram at a Glance

What ships today

The current repository includes Home, Explore, Library, Likes, Moments, Settings, folder pages, a post detail view and modal flow, local likes, delete actions, optional shared-password protection, manual scans, full library rebuilds, and thumbnail-only rebuilds.

How indexing behaves

Foldergram recursively discovers non-hidden folders under GALLERY_ROOT. Any folder that directly contains supported media becomes an indexed album. Files placed directly in the gallery root are ignored.

Supported formats

Images: .jpg, .jpeg, .png, .webp, .gif. Videos: .mp4, .mov, .m4v, .webm, .mkv.

Storage model

Originals remain in the gallery root. SQLite stores indexed metadata. Thumbnails are generated under thumbnails/ and previews under previews/.

How Foldergram Works

1. Discover folders

Walk the gallery tree, skip hidden paths, and ignore managed storage paths that would otherwise re-enter the scan.

2. Index posts

Store normalized paths, media metadata, timestamps, stable sort order, and playback strategy in SQLite.

3. Generate derivatives

Create `640px` thumbnails and up to `1500px` previews, with direct-original playback for already compatible MP4 files.

4. Serve fast reads

Feed, folders, likes, moments, and explore read from SQLite and derivative URLs instead of scanning the filesystem on request.

5. Build moments and highlights

The home rail can surface date-based Moments when the library has enough EXIF-backed timestamps, or fall back to Highlights when capture-date coverage is sparse.

6. Maintain the library locally

Settings includes optional shared-password protection plus manual scan, thumbnail rebuild, and full library rebuild actions so you can protect access and refresh the index without touching the source files by hand.

Local-first docs for a local-first gallery.