nmemmertandClaude Sonnet 4.6 3429ec1d80 feat: places (reverse geocoding) + folder browser
Places:
- worker/geocode.js: Nominatim reverse geocoder, 1 req/sec rate limit,
  in-memory cache keyed to 3-decimal-place coordinates
- Ingest calls reverseGeocode() for any photo with GPS data; stores
  place_city and place_country on the photo row
- DB migrations add place_city / place_country columns + index on place_city
- Stats API returns cities grouped by count
- buildFilter() supports ?city= parameter
- FilterSidebar shows a Places section with city list + country sublabel

Folder browser:
- GET /api/fs/browse?path=… lists subdirectories (path-normalized to prevent traversal)
- Settings panel: 📁 button opens inline directory browser below the add
  input — navigate with up arrow / directory clicks, Select fills the input

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-18 08:27:41 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 16:33:55 -04:00
2026-08-17 12:59:20 -04:00
S
Description
Self-Hosted Photo Manager
280 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 97.2%
Python 1.7%
Dockerfile 0.6%
HTML 0.3%
CSS 0.2%