Library and upload
How a file becomes a searchable, organised photo.
Supported formats
| Images | JPEG, PNG, GIF, WebP, BMP, TIFF, HEIC, HEIF, AVIF |
|---|---|
| RAW | CR2, CR3, NEF, ARW, DNG, ORF, RW2, RAF, SRW, PEF |
| Video | MP4, MOV, AVI, MKV, WebM, M4V, WMV, FLV, 3GP |
Maximum size per file is 50 MB.
Processing pipeline
- Validate type and size, compute the SHA-256 checksum (duplicate detection).
- Extract EXIF with
exifread, then Pillow, thenexiftoolas the universal fallback (this is what reads GPS from HEIC). - Generate small, medium and large thumbnails and an optimised copy (max 2048 px, progressive JPEG).
- Encrypt the original with AES-256-GCM and store everything in S3.
- Reverse-geocode GPS to city, state and country.
- Detect faces and match them to people.
Favourites, archive, trash
A photo can be marked favourite or archived, given a description and tags, and rotated. Deleting moves it to the Trash; a background job permanently deletes photos that have been in the Trash for more than 30 days (checked every 6 hours). You can restore a photo or empty the Trash at any time.
Download
GET /api/photos/{id}/download decrypts and returns the original file.