Local-first
Originals stay in your gallery folder, untouched. Indexed metadata lives in SQLite on disk. No cloud sync, no external API, no accounts needed.
Point it at your folders, browse everything through a fast feed-style interface. No cloud, no accounts — just your files and SQLite.
Home (Recent, Rediscover, Random feed modes), Reels, Explore, Library, Folder pages, Post detail and modal, Likes, Favorites, Moments, Highlights, Folder stories, Settings, and local scan and rebuild tooling.
Foldergram walks GALLERY_ROOT recursively, skipping hidden paths. Any folder that directly contains supported media becomes an indexed album. Files at the gallery root and nested folders each become their own album.
Images: .jpg, .png, .webp, .gif. Videos: .mp4, .mov, .m4v, .webm, .mkv. Originals are never moved. SQLite stores metadata. Thumbnails and previews are written under thumbnails/ and previews/.
No password gate by default. Settings can enable admin-only access, a separate viewer password, or anonymous public mode. Admin sessions can run scans, rebuild indexes, delete posts, and manage access credentials.
Walk the gallery tree, skip hidden paths, and collect every non-hidden folder that directly contains supported media files.
Store normalized paths, media metadata, EXIF timestamps, stable sort order, and playback strategy in SQLite. Missing files are soft-deleted rather than hard-removed.
Create 640 px thumbnails, up to 1500 px image previews, and 720p-class video previews. Derivatives can be generated eagerly during scans or lazily on first request.
Feed, folder, reels, explore, likes, and moments pages all read from SQLite and serve derivative URLs — no filesystem walk per request.
Home surfaces date-based Moments when EXIF timestamps are available, or Highlights otherwise. Reserved AppFolder/stories subfolders power avatar stories and highlight rings on folder pages.
Admins manage stories mode, excluded folders, and Home/Reels defaults from General Settings, then run scans or rebuilds from Scan & Library. All controls are local — no remote calls involved.