A fast, native desktop app for photographers to import, cull, and organize photos.
Built with Tauri + Rust + React + TypeScript
I go out to shoot photos with my camera — it's my main hobby. I needed a simple and fast way to export images and videos from my SD card and organise proper folder structures. So I created this app in a day. Feel free to fork and develop!
- Fast Import — Scan SD cards or folders, detect duplicates, copy/move with custom folder templates
- RAW+JPG Pairing — Automatically links RAW and JPG pairs, shows JPG as primary with RAW toggle
- Culling Views — Grid, Loupe (full-res zoom/pan), Filmstrip, and Compare (side-by-side)
- Rating & Picks — Star ratings (1-5), Pick/Reject flags with keyboard shortcuts
- Date Browser — Navigate your library by Year > Month > Day tree
- Thumbnail Generation — Parallel, EXIF-aware thumbnails for JPG, HEIF, and RAW files
- Export to Lightroom — Generate XMP sidecar files with ratings and labels
- Trash Management — Soft delete with configurable retention period
- Volume Detection — Auto-detects SD cards and external drives
| Key | Action |
|---|---|
P |
Mark as Pick |
X |
Mark as Reject |
U |
Clear status |
1-5 |
Set rating |
0 |
Clear rating |
G |
Grid view |
E |
Filmstrip view |
C |
Compare view |
Enter |
Loupe view |
Escape |
Back to grid |
← → |
Navigate photos |
I |
Toggle EXIF info |
F |
Fullscreen |
Delete |
Move to trash |
npm install
cargo tauri devcargo tauri buildOutput: src-tauri/target/release/bundle/macos/PhotoFlow.app
- Backend — Rust, Tauri 2, SQLite (rusqlite)
- Frontend — React 19, TypeScript, Zustand, Tailwind CSS 4
- Image Processing —
imagecrate with EXIF orientation, parallel thumbnail generation - RAW Support — Embedded JPEG preview extraction from CR2, CR3, ARW, NEF, ORF, RAF, DNG, RW2, PEF
MIT