Add local docker and R2-compatible dev setup

🟢 open · #63 · willchen96/mike ← punyaslokdutta/HarveyOss · opened 14d ago by punyaslokdutta · +1,729-30 across 17 files · ↗ on GitHub

From the PR description

Summary

Adds a local Docker development setup for Mike with Supabase for auth/database services and R2-compatible object storage for document blobs.

What's included

  • docker-compose.yml for local frontend/backend dev
  • Dockerfiles for frontend/ and backend/
  • local supabase/ config and bootstrap migration
  • backend storage switched to S3-compatible object storage envs (R2_*)
  • local MinIO service for R2-compatible object storage during Docker development
  • Docker-specific env example files so existing cloud env files remain unchanged
  • README instructions for startup and local verification

Notes

  • Frontend runs on http://localhost:4000
  • Backend runs on http://localhost:4001
  • Supabase remains the local auth/database stack
  • Object storage is R2-compatible: Cloudflare R2 in hosted environments, MinIO locally in Docker
  • This works with the repo's existing backend CORS setup by setting FRONTEND_URL=http://localhost:4000

Verified locally

  • supabase start
  • docker compose up -d --build
  • frontend responds on :4000
  • backend /health responds on :4001

Our analysis

Add local Docker dev stack with Supabase and MinIO — 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-63.md from inside the repo you want the changes in.

⬇ Download capture-pull-63.md