Tagline: Quickly pick the best photos and discard the rest.
Pickr is a minimalist application designed to help you quickly curate your photo gallery. It analyzes your images for common issues like blur, poor exposure, and near-duplicates, helping you keep only the best shots while freeing up storage.
- Upload & Analyze: Multi-photo upload support with instant analysis.
- Intelligent Scoring: Combined score based on:
- Blur Detection: Focused analysis on faces if detected.
- Exposure Analysis: Metrics for brightness, clipping, and dynamic range.
- Contrast & Color: Evaluates visual punch and vibrancy.
- Smart Grouping: Perceptual hashing (PHash) groups similar and near-duplicate photos.
- Best Shot Selection: Automatically flags the highest-scoring image in each similar set.
- Mobile-First UX:
- Swipe Gestures: Swipe left to Delete, right to Keep.
- PWA Ready: Installable on mobile devices for an app-like experience.
- Glassmorphism Design: Modern, premium aesthetic with dark mode support.
graph TD
A[Mobile Web Browser] <-->|HTTP/JSON| B[FastAPI Backend]
B --> C[OpenCV / NumPy Analysis]
C --> D[Blur & Exposure Detection]
C --> E[PHash Duplicate Detection]
B --> F[Grouped Analysis Results]
F <--> G[Vue 3 Frontend]
G --> H[PWA Caching / Service Workers]
- Python 3.10+
- FastAPI: Web framework.
- OpenCV / NumPy: Image processing.
- Pillow / pillow-heif: Format support (HEIC/JPEG/PNG).
- Pytest: Testing framework.
- Vue 3: Reactive UI.
- Vite: Build tool.
- ESLint: Linting and code quality.
- Lucide-Vue-Next: Iconography.
- Navigate to backend directory:
cd backend - Install dependencies:
pip install -r requirements.txt
- Run the server:
Access API docs at
uvicorn main:app --reload
http://localhost:8000/docs.
- Navigate to frontend directory:
cd frontend - Install dependencies:
npm install
- Run in development mode:
npm run dev
Run backend tests using pytest:
pytest test_scoring.pyPlease refer to CONTRIBUTING.md for development guidelines and workflow.
This project is licensed under the MIT License - see the LICENSE file for details.