Docker dev stack with Supabase and MinIO for zero-dependency local dev
punyaslokdutta adds a self-contained Docker Compose setup that brings up the full Mike stack locally - frontend, backend, Supabase auth/database, and S3-compatible blob storage - without any cloud accounts. The storage abstraction is also refactored so the same backend code can talk to Cloudflare R2 in production and MinIO locally.
The compose file wires the frontend to :4000 and the backend to :4001, with FRONTEND_URL already set to match Mike's existing CORS configuration. No server-side changes are required for the ports to work. Docker-specific env example files are added alongside the existing cloud env files, so existing cloud deployments are unaffected.
The more substantive change is in backend/src/lib/storage.ts. The blob path switches from Supabase Storage to an S3-compatible interface driven by R2_* environment variables, which makes the same code path serve both Cloudflare R2 (hosted) and MinIO (local). Supabase keeps auth and database; documents move to a separate object-storage interface. This is a different direction from the fork's other storage commit, which swaps to Supabase Storage - the two approaches reflect different iterations of the same local dev problem.
The setup sequence is supabase start followed by docker compose up -d --build. The PR description uses /health on the backend and the frontend root as the two verification points. The PR is open against willchen96/mike main and has not landed.
The diff in the repo at the time of this snapshot shows only the R2-to-Supabase-Storage swap commit, not the full Docker compose addition - the compose files may be on a separate branch or PR. The source commentary is more complete than what's visible in the diff.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?