punyaslokdutta moves document storage onto Supabase

One fewer vendor in the stack: the fork now keeps its files in the same place as its database.

infrastructureintegration

Mike has to stash the documents people upload somewhere. This fork had been parking them in Cloudflare R2 - Amazon-style cloud file storage that bills per operation. punyaslokdutta has switched that over to Supabase Storage, the file-hosting side of the same Supabase platform the fork already uses for its database and logins.

The practical upshot is consolidation. Instead of wiring up and paying for a separate storage service, everything now lives under one roof, which makes the whole thing simpler to stand up and run locally. The trade is a different cost shape - Supabase's storage tiers in place of R2's pay-per-request pricing - so the better fit depends on your document volumes. Nothing about how the app uses or serves files changed; this is purely a plumbing decision underneath.

So what Worth a look for anyone weighing where a legal-AI deployment's documents should live and what that costs to operate.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

2 commits from punyaslokdutta/HarveyOss, oldest first. Source extracted verbatim from the harvested git log.

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 thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-508.md from inside the repo you want the changes in.

⬇ Download capture-thread-508.md