diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..240dfcef6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,53 @@ +# AGENTS.md + +## Cursor Cloud specific instructions + +### Overview + +Reactive Resume is a pnpm monorepo (Turborepo) with a single full-stack web app at `apps/web` (TanStack Start / React 19 / Vite) and ~15 internal packages under `packages/`. It runs as a single Node.js process on port 3000. + +### Prerequisites + +- **Node.js 24** (matches Dockerfile `ARG NODE_VERSION=24`). Use `nvm install 24 && nvm use 24` if needed. +- **Docker** is required to run PostgreSQL. Start it with `sudo dockerd &` if the daemon isn't running. +- **pnpm 11** is managed via corepack (`corepack enable`). + +### Database + +PostgreSQL runs via Docker Compose: + +``` +sudo docker compose -f compose.dev.yml up -d postgres +``` + +The dev default connection string is `postgresql://postgres:postgres@localhost:5432/postgres`. + +**Important**: `drizzle-kit` (used by `pnpm db:migrate`) reads `DATABASE_URL` from `process.env` directly — it does **not** auto-load the `.env` file. You must `export DATABASE_URL=...` before running migration commands, or set it in your shell profile. + +### Environment + +Copy `.env.example` to `.env`. The three required variables are: + +- `APP_URL` (default `http://localhost:3000`) +- `DATABASE_URL` (default `postgresql://postgres:postgres@localhost:5432/postgres`) +- `AUTH_SECRET` (any non-empty string) + +S3/SeaweedFS is optional — if S3 vars are omitted or commented out, the app uses local filesystem storage under `/data`. + +### Common commands + +| Task | Command | +|------|---------| +| Install deps | `pnpm install` | +| Run migrations | `DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres" pnpm db:migrate` | +| Dev server | `pnpm dev` (starts on port 3000) | +| Lint/format | `pnpm check` (Biome) | +| Tests | `pnpm test` (Vitest) | +| Build | `pnpm build` | +| Typecheck | `pnpm typecheck` | + +### Gotchas + +- The dev server (`pnpm dev`) auto-runs migrations on startup via Nitro, so `pnpm db:migrate` is only strictly needed for first-time setup or after pulling new migration files. +- Email sending requires SMTP config; without it, emails are logged to console. This is fine for dev — the app still functions, but email verification links appear in server logs. +- The `lefthook.yml` pre-commit hook runs `biome check` on staged files. Run `pnpm check` before committing to avoid hook failures.