R2 -> Supabase Object storage

⛔ closed · #47 · willchen96/mike ← punyaslokdutta/HarveyOss · opened 18d ago by punyaslokdutta · closed 16d ago · +37-90 across 3 files · ↗ on GitHub

From the PR description

R2 requires a separate Cloudflare account, API tokens, and bucket configuration on top of the existing Supabase setup. Since Supabase Storage covers the same use cases (upload, download, delete, signed URLs) and the project already depends on Supabase for auth and Postgres, using it for storage eliminates an entire external service from the local setup and production stack.

Our analysis

Fork sync merge from origin/main (3 PRs + upstream willchen96 resync) — read the full analysis →

Storage backend swap: Cloudflare R2 → Supabase Storage — read the full analysis →

Think the analysis missed something the PR description covers?

Commits in this PR (2)

SHA Subject Author Date
39cdf1ca chore: local setup - swap R2 for Supabase Storage, install frontend deps Punyaslok Dutta 2026-05-09 ↗ GitHub
commit body
- storage.ts: replaced @aws-sdk/client-s3 + R2 with Supabase Storage
  (upload, download, delete, signed URLs all via @supabase/supabase-js)
- .env.example: removed R2 vars, added STORAGE_BUCKET=mike
- frontend/package-lock.json: updated after npm install --legacy-peer-deps

Local setup recap:
- Backend :3001, frontend :3000
- Supabase project: gbdfkvaigunfvrgurkwk (ap-northeast-1 Tokyo)
- Storage bucket: mike (private, Supabase Storage)
- DB schema applied via 000_one_shot_schema.sql
- AI provider: Gemini
- Secrets in .env / .env.local - gitignored, not committed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4e73a45d Merge remote-tracking branch 'origin/main' Punyaslok Dutta 2026-05-09 ↗ GitHub

Capture this PR into my fork

Download a Markdown prompt that tells Claude how to port every commit in this PR into your working tree. Run it via claude -p < capture-pull-47.md from inside the repo you want the changes in.

⬇ Download capture-pull-47.md