Files
famapp/docs/tasks/01-repo-init.md
T
ginnoir b89690a9f2 Initial scaffold: tooling, plan, task briefs
- 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).
2026-05-06 00:05:50 -05:00

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 init in C:\Users\MattC\Documents\famapp with main as 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-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.