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.