Add Cursor Cloud dev environment setup instructions
From the PR description
Summary
Sets up a fully local development environment for Mike (frontend + backend + Supabase + S3 storage) that runs end to end, and documents it in a new AGENTS.md for future agents. Verified non-LLM flows with no secrets, and the LLM assistant flow with an instance-wide Anthropic key.
Why / Motivation
Mike cannot run without Supabase (Auth + Postgres) and an S3-compatible bucket. To make the app runnable in a cloud dev VM without provisioning external services, this establishes a self-contained local stack: a local Supabase stack (supabase start) for Auth + Postgres and a local MinIO bucket for S3-compatible storage. The only committed change is the setup documentation.
Changes
- Add
AGENTS.mdwith a## Cursor Cloud specific instructionssection covering the non-obvious local-stack bring-up (Docker daemon,supabase start, MinIO bucket, schema load), the required gitignored.envvalues, and gotchas (JWT-style Supabase keys, optional LLM keys, model-picker behavior, missing LibreOffice,.envrestart behavior, service ports). - No application code changed.
backend/.env,frontend/.env.local, and the localsupabase/config are intentionally left untracked (gitignored / local-only). - The environment update script installs dependencies only:
npm install --prefix backendandnpm install --prefix frontend.
Tradeoffs & risks
- The local stack (Docker/Supabase/MinIO) is started manually per the AGENTS.md steps - it is deliberately not in the update script (no service startup there). Office→PDF conversion needs LibreOffice, which is not installed by default. LLM flows need a provider key (added as a VM secret, not committed).
How verified
Standard checks (matching CI):
| App | Command | Result |
|---|---|---|
| backend | npm test --prefix backend |
259 passed, 5 skipped |
| backend | npm run build --prefix backend |
success |
| frontend | npm run lint --prefix frontend |
0 errors (warnings only) |
| frontend | npm test --prefix frontend |
38 passed |
| frontend | npm run build --prefix frontend |
success (23 routes) |
End-to-end run against the local stack (frontend :3000, backend :3001, Supabase :54321, MinIO :9000):
- Non-LLM chain: sign up via Supabase Auth → create project via backend → upload a PDF → object confirmed in MinIO (
documents/<user>/<doc>/source.pdf, 441 B). Verified via script and via the browser UI (project "Acme Corp NDA Review" withsynthetic_nda.pdflisted as ready). - LLM chain (instance-wide Anthropic key): streaming
POST /chatwith aclaude-*model returned a streamed answer; verified in the UI by selecting Claude Opus 4.8 in the assistant and asking "In one short sentence, what is an NDA?" - a coherent streamed answer appeared.
Non-LLM hello-world:
mike_hello_world_signup_project_upload.mp4 Project created Document uploaded to project
LLM assistant chat (Claude):
mike_assistant_claude_chat.mp4 Assistant answered NDA question with Claude
Checklist
- Ran the relevant build/test command for the area changed.
- Reviewed
git diffand removed unrelated changes. - Updated docs / env examples if setup, config, or behavior changed.
- No secrets, API keys, real documents, or
.envfiles committed.
To show artifacts inline, enable in settings.
Our analysis
Document a self-contained local Mike stack — read the full analysis →
Think the analysis missed something the PR description covers?
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-1.md from
inside the repo you want the changes in.