Skip to main content

EP-MEL-16 — File Storage with Signed URLs, Virus Scan, Image Optimization

Companion: Backlog README · EPICS.md · canonical: 07-epics-and-user-stories.md §18

Summary

WaveR1
PriorityP0
Primary ownerfile-storage-service
Participating servicesevery consumer service (theme assets, receipts, photos, documents)
Journeys realisedJ-22 (Theme upload + asset lifecycle)
WorkflowsWF-11
Frontend surfacesAll upload-capable surfaces
Story count4

Outcome

File uploads everywhere use signed URLs, are virus-scanned within 5 s, are isolated per tenant under a tenants/{tenant_id}/ prefix, get image-optimized variants served via CDN, and follow lifecycle policies (retention, archival).

Cross-cutting AC for this epic

  • Signed URLs scoped to tenant + content-type + max size; expire ≤ 15 minutes.
  • Virus scan via Cloud-managed AV; quarantine on positive with audit + alert.
  • CDN cache busting via content-hash filenames; never serve stale.
  • Lifecycle policies move objects to colder storage tiers per tenant plan.

Stories

IDTitle
US-MEL-0122Upload with signed URL & virus scan
US-MEL-0123Tenant prefix isolation
US-MEL-0124Image optimization & CDN
US-MEL-0125Lifecycle policies (retention, archival)

Full AC in ../07-epics-and-user-stories.md §18.

Cross-references