A local-first desktop application that automatically organizes, indexes, searches, and understands screenshots using OCR and AI.
- Screenshot Folder Monitoring — Automatically detects new screenshots in a user-selected folder using filesystem watching (
notifycrate) - Auto-Indexing — SHA-256 hashing and SQLite storage with deduplication
- OCR Text Extraction — Tesseract OCR integration with automatic text extraction on new screenshots, confidence scoring, and WebP format support
- Full-Text Search — SQLite FTS5-powered search across OCR text and filenames with BM25 relevance ranking, debounced instant search, and snippet support
- Advanced Filters — Date range, OCR status, OCR confidence threshold, file size range, category dropdown, tag search, and sort options (date/filename/size/relevance, ascending/descending) with a collapsible filter panel
- AI Classification — OpenRouter-powered (GPT-4o-mini) automatic categorization, tag generation, and summary creation with auto-classify toggle, manual single/batch triggers, and Settings UI for API key management
- Batch OCR — Run OCR on all previously indexed screenshots that lack OCR text
- Screenshot Grid View — Responsive grid with thumbnails, file metadata, OCR status badges, category badges, tags, summaries, and collapsible OCR text preview
- Dark/Light Theme — Toggle between dark and light themes with localStorage persistence, using Tailwind CSS
dark:variant pattern - Keyboard Shortcuts — Extended shortcut set:
/(focus search),Esc(clear/exit),Ctrl+B(sidebar),Ctrl+F(filters),Ctrl+1/2/3/4(views),Ctrl+A(select all),Delete(delete selected),Ctrl+Shift+O(batch OCR),Ctrl+Shift+A(batch AI) - Bulk Actions — Multi-select mode with checkbox overlay, select all, and bulk delete
- Settings — Change watched folder, view OCR engine status, trigger batch processing, toggle theme, view keyboard shortcuts reference, and monitor indexing statistics
- Cloud Sync — Bidirectional sync of screenshot metadata and image files via Supabase, with email/password + GitHub OAuth authentication, cross-device access, auto-sync toggle, and cloud data management
- Analytics Dashboard — Usage tracking with overview stats (total screenshots, storage, OCR/AI coverage), screenshots over time (30-day bar chart), activity by hour, category distribution (donut chart), top tags (horizontal bar chart), OCR confidence distribution, and file size distribution, all powered by Recharts
- First Launch Setup — Native folder picker dialog for selecting the screenshot folder on first run
- Persistent State — Watched folder path and SQLite database persist across app restarts
- Public launch (Phase 8)
- Desktop: Tauri v2, React 19, TypeScript, Vite, Tailwind CSS v4
- State: Zustand, TanStack Query
- Cloud: Supabase (PostgreSQL, Auth, Storage)
- Charts: Recharts
- Database: SQLite (local, via
rusqlite) - OCR: Tesseract OCR (subprocess-based, hybrid detection)
- File Watching:
notifycrate with debounce - Image Processing:
imagecrate (WebP conversion)
- Node.js 22+
- Rust (stable)
- Tesseract OCR — Install for OCR text extraction
- Windows:
winget install UB-Mannheim.TesseractOCR - The app auto-detects Tesseract at common install paths or via PATH
- Windows:
npm install
npm run dev # Start Vite dev server
npx tauri dev # Launch Tauri desktop appnpm run build # Build frontend (tsc + vite)
cargo build # Build Rust backend only
npx tauri build # Build complete desktop app for production- First Launch — Pick a folder to monitor (e.g., your Screenshots folder)
- Initial Scan — Existing screenshots are indexed with SHA-256 deduplication
- Live Monitoring — New screenshots are detected within ~1 second, hashed, and indexed
- OCR Processing — Tesseract extracts text from each new screenshot in a background thread
- Search — Search across all extracted OCR text from the screenshot grid
See ARCHITECTURE.md for the full design.
See ROADMAP.md for the development roadmap.