# 01 — Repo init & tooling ## Goal Initialize the famapp repo with pnpm, TypeScript strict, ESLint/Prettier, and a clean baseline commit. ## Why Every later task assumes the repo, lockfile, and lint config exist. ## Depends on None. ## Scope - `git init` in `C:\Users\MattC\Documents\famapp` with `main` as default branch. - `package.json` (`"packageManager": "pnpm@"`, `"engines": { "node": ">=22" }`). - `pnpm-workspace.yaml` (single root for now; leave room for workspaces). - `tsconfig.json` — strict, `moduleResolution: "bundler"`, paths alias `@/* → src/*`. - ESLint (flat config) + Prettier with sensible defaults; `eslint-config-next` deferred to task 02. - `.gitignore` (Node, Next.js, env files, OS junk). - `.env.example` with placeholders for: `DATABASE_URL`, `AUTH_OIDC_ISSUER`, `AUTH_OIDC_CLIENT_ID`, `AUTH_OIDC_CLIENT_SECRET`, `AUTH_SECRET`, `VAPID_PUBLIC_KEY`, `VAPID_PRIVATE_KEY`, `NEXT_PUBLIC_APP_URL`. - `README.md` — short pointer to `CLAUDE.md` and `docs/tasks/`. - Editor: `.editorconfig`, `.nvmrc` (`22`). ## Out of scope - Installing Next.js, Drizzle, Tailwind (those are in 02 and 03). - Husky / lint-staged (defer; small two-person project doesn't need it yet). ## Acceptance criteria - [ ] `pnpm install` succeeds on a clean clone. - [ ] `pnpm lint` and `pnpm format:check` run (even if no files yet) and exit 0. - [ ] `tsc --noEmit` exits 0. - [ ] `git log` shows exactly one initial commit. ## Notes - Use the latest pnpm 10.x. - Flat ESLint config (`eslint.config.mjs`) — don't use the legacy `.eslintrc`.