- pnpm 10 workspace + TypeScript strict + ESLint flat + Prettier - CLAUDE.md as canonical brief - docs/tasks/ — 22 task briefs broken out by phase for sub-sessions - docs/decisions/ — ADR scaffold Implements task 01 (repo-init).
1.5 KiB
1.5 KiB
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 initinC:\Users\MattC\Documents\famappwithmainas default branch.package.json("packageManager": "pnpm@<latest 10.x>","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-nextdeferred to task 02. .gitignore(Node, Next.js, env files, OS junk)..env.examplewith 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 toCLAUDE.mdanddocs/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 installsucceeds on a clean clone.pnpm lintandpnpm format:checkrun (even if no files yet) and exit 0.tsc --noEmitexits 0.git logshows exactly one initial commit.
Notes
- Use the latest pnpm 10.x.
- Flat ESLint config (
eslint.config.mjs) — don't use the legacy.eslintrc.