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) <noreply@anthropic.com>
This commit is contained in:
29
README.md
29
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
|
- **Photo Organization**: Browse photos in a timeline view with virtual scrolling for performance
|
||||||
- **Thumbnail Generation**: Automatic thumbnail generation for all photo formats including RAW
|
- **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
|
- **Keyboard Shortcuts**: Lightroom-style keyboard navigation and actions
|
||||||
- **File Support**: JPEG, PNG, RAW formats (CR2, CR3, NEF, ARW, etc.), HEIC/HEIF, and videos
|
- **File Support**: JPEG, PNG, RAW formats (CR2, CR3, NEF, ARW, etc.), HEIC/HEIF, and videos
|
||||||
- **Heaps**: Temporary collections for organizing photos
|
- **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
|
- **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
|
## Tech Stack
|
||||||
|
|
||||||
### Backend
|
### Backend
|
||||||
- Python 3.12 with FastAPI
|
- Python 3.12 with FastAPI
|
||||||
- SQLite with SQLAlchemy (async)
|
- PostgreSQL + pgvector with SQLAlchemy (async) and Alembic migrations
|
||||||
- Celery + Redis for background tasks
|
- Celery + Redis for background tasks
|
||||||
- pyvips for fast thumbnail generation
|
- pyvips for fast thumbnail generation
|
||||||
- ExifTool for metadata extraction
|
- ExifTool for metadata extraction
|
||||||
|
- ONNX Runtime for vision models (YOLO, CLIP, InsightFace)
|
||||||
|
|
||||||
### Frontend
|
### Frontend
|
||||||
- React 18 with TypeScript
|
- React 18 with TypeScript
|
||||||
@@ -161,9 +167,9 @@ The application consists of 5 Docker services:
|
|||||||
|
|
||||||
- **frontend**: React SPA served by Nginx
|
- **frontend**: React SPA served by Nginx
|
||||||
- **backend**: FastAPI REST API
|
- **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
|
- **redis**: Message broker for Celery
|
||||||
- **db**: SQLite database (file-based)
|
- **db**: PostgreSQL with pgvector extension (for CLIP/face embeddings)
|
||||||
|
|
||||||
## Keyboard Shortcuts
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
@@ -172,8 +178,7 @@ The application consists of 5 Docker services:
|
|||||||
| `←` `→` `↑` `↓` | Navigate photos |
|
| `←` `→` `↑` `↓` | Navigate photos |
|
||||||
| `Space` | Quick preview |
|
| `Space` | Quick preview |
|
||||||
| `Enter` | Open loupe view |
|
| `Enter` | Open loupe view |
|
||||||
| `P` | Pick photo |
|
| `T` | Add to active heap |
|
||||||
| `X` | Reject photo |
|
|
||||||
| `1-5` | Set star rating |
|
| `1-5` | Set star rating |
|
||||||
| `Tab` | Toggle left sidebar |
|
| `Tab` | Toggle left sidebar |
|
||||||
| `I` | Toggle metadata panel |
|
| `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
|
- Handles 100,000+ photos efficiently
|
||||||
- Virtual scrolling for smooth timeline navigation
|
- Virtual scrolling for smooth timeline navigation
|
||||||
- Thumbnail generation at 10+ photos/second
|
- 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
|
- Smart albums (auto-populated by saved filters)
|
||||||
- Face detection and clustering
|
|
||||||
- Smart albums
|
|
||||||
- Duplicate detection
|
|
||||||
- Export presets
|
- Export presets
|
||||||
- Multi-user support
|
- Multi-user support
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user