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.