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).
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user