File Storage
Purpose
Where uploaded assets (product images, profile photos, logos) live.
Approach
S3-compatible object storage (matches the earlier infrastructure conversation's recommendation) — not stored in the database, not stored on the app server's local disk (which wouldn't survive redeploys/scaling anyway).
Separation by Environment
Per the earlier environment-strategy conversation: separate buckets (or bucket prefixes) for production, staging, and local — so test uploads in staging never appear in production and vice versa.
What's Stored Here
- Product images (uploaded by merchants when creating an Offer)
- Merchant logos / business branding
- Creator profile photos
- Not anything related to Swich/KYC documents (updated 2026-08-23, was Paddle) — not confirmed whether these stay inside Swich's own onboarding flow the way Paddle's did (per Backend Architecture's 2026-08-23 update); Swich is a processor, not a Merchant of Record, so this claim needs verifying once real integration begins, not assumed
Open Questions
- Whether product images are fetched/scraped automatically from a merchant's existing website URL (as discussed in the "owner fetched product from website directly" conversation) or always manually uploaded — auto-fetch is a nice-to-have that reduces merchant friction but adds scraping/parsing complexity; recommend manual upload for MVP with auto-fetch as a v2 convenience feature