From a4f64fad582bed69c6d6b9a2a35f2f3f4633ff84 Mon Sep 17 00:00:00 2001 From: dtoro Date: Fri, 10 Apr 2026 15:50:28 +0200 Subject: [PATCH] docs: update README for vision pipeline and Postgres stack Reflect current state: Postgres+pgvector replaces SQLite, vision pipeline (YOLO, CLIP, InsightFace, OCR) is shipped, card-grid browse views for tags/colors/ratings/people, map view, duplicate detection, and semantic search are all live. Remove completed items from future features. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 16da932..866de8d 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,27 @@ A self-hosted, Docker-deployed photo management application inspired by Lightroo - **Photo Organization**: Browse photos in a timeline view with virtual scrolling for performance - **Thumbnail Generation**: Automatic thumbnail generation for all photo formats including RAW -- **Metadata Extraction**: Full EXIF/XMP metadata extraction and search +- **Metadata Extraction**: Full EXIF/XMP metadata extraction and GPS mapping - **Keyboard Shortcuts**: Lightroom-style keyboard navigation and actions - **File Support**: JPEG, PNG, RAW formats (CR2, CR3, NEF, ARW, etc.), HEIC/HEIF, and videos - **Heaps**: Temporary collections for organizing photos -- **Tags & Ratings**: Organize with tags, star ratings, and color labels +- **Tags & Ratings**: Organize with tags, star ratings, and color labels — each with a card-grid browse view that drills into a full Timeline detail - **Dark Mode**: Photography-optimized dark interface +- **Vision Pipeline**: YOLO object detection, OCR text extraction, CLIP embeddings for semantic search, InsightFace face detection and clustering +- **People View**: Browse identified people as cards, click to see all photos of a person +- **Map View**: Browse GPS-tagged photos on an interactive Leaflet map +- **Duplicate Detection**: Perceptual hash-based duplicate grouping with best-pick UI +- **Semantic Search**: Natural-language photo search powered by CLIP embeddings ## Tech Stack ### Backend - Python 3.12 with FastAPI -- SQLite with SQLAlchemy (async) +- PostgreSQL + pgvector with SQLAlchemy (async) and Alembic migrations - Celery + Redis for background tasks - pyvips for fast thumbnail generation - ExifTool for metadata extraction +- ONNX Runtime for vision models (YOLO, CLIP, InsightFace) ### Frontend - React 18 with TypeScript @@ -161,9 +167,9 @@ The application consists of 5 Docker services: - **frontend**: React SPA served by Nginx - **backend**: FastAPI REST API -- **worker**: Celery workers for background tasks +- **worker**: Celery workers for background tasks (thumbnails, metadata, vision pipeline) - **redis**: Message broker for Celery -- **db**: SQLite database (file-based) +- **db**: PostgreSQL with pgvector extension (for CLIP/face embeddings) ## Keyboard Shortcuts @@ -172,8 +178,7 @@ The application consists of 5 Docker services: | `←` `→` `↑` `↓` | Navigate photos | | `Space` | Quick preview | | `Enter` | Open loupe view | -| `P` | Pick photo | -| `X` | Reject photo | +| `T` | Add to active heap | | `1-5` | Set star rating | | `Tab` | Toggle left sidebar | | `I` | Toggle metadata panel | @@ -211,14 +216,12 @@ Source roots are managed by the UI / API (the database owns them). Edit - Handles 100,000+ photos efficiently - Virtual scrolling for smooth timeline navigation - Thumbnail generation at 10+ photos/second -- SQLite FTS5 for fast full-text search +- PostgreSQL full-text search with tsvector indexing +- pgvector for fast nearest-neighbor embedding search -## Future Features (Phase 2) +## Future Features -- AI-powered scene classification -- Face detection and clustering -- Smart albums -- Duplicate detection +- Smart albums (auto-populated by saved filters) - Export presets - Multi-user support