Yuanhao Feng

Back

Trove

A local-first media management desktop app that organizes photos and videos in a chat-style interface.

Why I built it#

Photos and videos end up scattered across drives and folders. Trove organizes local media in a chat-like interface. Files stay where they are; only metadata is indexed.

Chat-style browsing#

The interface has three panes: sidebar, conversation list, and chat view. Each media group is a “conversation” you scroll through like a chat thread. Images and videos appear as message bubbles with optional text captions. Conversations can be pinned or archived.

Videos auto-preview (muted) as they scroll into view. Click to open a full-screen player, or pop one out into a floating standalone window.

Media import#

Three modes: drag-and-drop files manually, bulk-import from a folder, or bind a folder so new files sync in automatically via filesystem monitoring.

Map view#

Geotagged photos and videos appear on an interactive map with marker clustering. Click a cluster to browse all media from that location. Supports GPS data from JPEG, HEIC, MOV and MP4 files.

Security and backup#

Supports encrypting the database with a master password, and individual conversations can be independently encrypted. Backups export to a .trovebackup archive containing only metadata and thumbnails, never the media files themselves.

Technical details#

A Tauri 2 desktop app with a Rust backend handling file hashing, filesystem watching, volume detection and encryption, and a React frontend using Zustand for state. The database is SQLite with SQLCipher encryption, passwords derived via Argon2, and file integrity checked with BLAKE3. The map is built on Leaflet, full-text search uses SQLite FTS5. Runs on Windows and macOS.