Privacy-first adaptive photo and video library application powered by Tauri v2, React, and a high-performance Rust backend.
Quick Start | Features | Image Editor | Video Editor | Documentation
Note
Prism is a unified, adaptive photo & video library application. It runs natively as a desktop app (Tauri v2), as a web app, or via Docker container deployment (prism-server).
# Install frontend dependencies
cd frontend && pnpm install && cd ..
# Option A: Run in Web Dev Mode (Browser UI + Rust Backend)
./run-web.sh
# Option B: Run in Native Desktop Shell Mode (Tauri v2)
./run-desktop.shThe Rust backend runs on port 8269, and the Vite dev server on port 3005. Open http://localhost:3005 in Web Mode or use the Tauri desktop window.
- Smart Import & Folder Watching — Automatically detects and indexes new photos from local media directories.
- EXIF Extraction — Parses full camera, GPS, exposure, and time metadata.
- Virtualized Photo Grid — High-performance grid powered by TanStack Virtual for fluid scrolling through 100k+ media assets.
- Full-Text Search — SQLite FTS5 index for fast discovery by location, caption, camera model, or OCR text.
- In-Process Face Recognition — Local SCRFD + ArcFace face detection with person grouping.
- Albums & Memories — Smart albums (documents, screenshots, places) and automated highlights.
Non-destructive professional photo editor built directly into the desktop UI:
| Category | Available Tools |
|---|---|
| Light | Exposure, brightness, contrast, highlights, shadows, whites, blacks |
| Color | HSL per-band, color wheels, temperature, tint, vibrance, saturation |
| Tone | Per-channel RGB curves with bezier spline interpolation |
| Presets | Curated cinematic, vintage, and creative look presets |
| Selective | Adjustment layers with custom drawn masks (lasso, AI segmentation) |
| Portrait | Skin smoothing, face brightness, AI-powered face enhancements |
| Healing | AI-powered object removal and inpainting (LaMa ONNX) |
| Effects | Annotations, frames, grain, light leaks, vignettes, tilt-shift, LUT support |
| Transform | Crop, rotate, flip with aspect ratio locks |
| Export | JPEG, PNG, WebP export with custom quality settings |
Full non-linear multi-track video editing engine:
- Multi-track timeline supporting video, audio, and text overlays
- Split, trim, copy, paste, and delete clip operations
- Keyframe animation with bezier velocity curves
- Per-clip color grading and transitions
- Multi-cam editing and audio track mixing
- Speed ramping with variable speed control
- Background video proxy generation for smooth preview rendering
- Multi-format MP4 export with configurable codecs and bitrates
- Leaflet-based map visualization with marker clustering by GPS EXIF coordinates.
- Route drawing, density heatmaps, and temporal time-slider filtering.
- Argon2id-encrypted storage area for private media.
- Auto-locking session handling and hidden media state.
graph TB
subgraph Desktop_App["Prism Desktop App Shell"]
subgraph Frontend_UI["Vite React 18 UI"]
Views["Views (PhotoGrid, Editor, Map, Albums)"]
Stores["Zustand State Stores"]
end
subgraph Backend_Process["Native Rust Backend (Axum)"]
API["REST API Router (Port 8269)"]
Services["ML Inference / Media Analyzers"]
end
end
DB[("SQLite WAL + FTS5")]
FS["Local Storage (uploads/ & thumbnails/)"]
Frontend_UI --> |"HTTP REST (127.0.0.1:8269)"| Backend_Process
Backend_Process --> DB
Backend_Process --> FS
| Document | Description |
|---|---|
| Architecture | Technical architecture, component layout, and data flow |
| CLI Reference | Command-line interface and plugin management |
| Image Editor Guide | In-depth breakdown of all 19 image editing tools |
| Video Editor Guide | NLE timeline features and video pipeline |
| AI Features | Local ONNX models and AI capability documentation |
| Setup Guide | System dependency installation and troubleshooting |
| Security Model | Locked folder, encryption, and privacy details |
| API Reference | REST API endpoint documentation |
| Plugin Development | Guide to building, packaging, and publishing Prism plugins |
| Database Schema | SQLite tables and indexes reference |
Prism Desktop is configured via environment variables or runtime settings:
| Variable | Default | Description |
|---|---|---|
HOST |
127.0.0.1 |
Local backend bind address |
PORT |
8269 |
Local backend port |
DATABASE_URL |
sqlite://prism.db |
SQLite database URL |
UPLOAD_DIR |
uploads |
Local directory for imported media |
THUMBNAILS_DIR |
thumbnails |
Directory for generated WebP thumbnails |
WEB_STATIC_DIR |
./frontend/dist |
Directory for standalone static web serving |
API_KEY |
(empty) | Optional API key authentication header |
GPU_MODE |
cpu |
Inference mode (cpu, cuda, metal) |
RUST_LOG |
info |
Logging verbosity level |
# Frontend type check
cd frontend && pnpm tsc
# Frontend linter
cd frontend && pnpm lint
# Frontend tests
cd frontend && pnpm test
# Build frontend production bundle
cd frontend && pnpm build
# Rust backend tests
cd backend_rust && cargo test