System summary
- Single Cloudflare Worker (
src/index.ts) serves both public UI and admin UI.
- R2 stores image objects; KV stores metadata and indexes.
- Public API responses are cached using the Cache API.
- Cloudflare Image Resizing generates on-demand variants.
Request routing
- Public routes:
/gallery, /api/gallery, /media/*, /health, /assets/*.
- Admin routes:
/admin/* and /api/admin/* (no auth in code; protect via Cloudflare Access).
Caching
/api/gallery responses are cached when GET succeeds.
- Cache invalidation runs after write operations to ensure fresh lists.