diff --git a/CLAUDE.md b/CLAUDE.md index 0b0d76c4..d7bebde3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -93,6 +93,9 @@ make start # build images + run the dev stack in the background make dev # backend containers + web dev server on the host (hot reload, :3000) make stop # stop the dev stack +make lint # fix lint/format/type issues in web, auth-realtime, core, e2e +make check-lint # the same gates, verification only + make e2e # one-shot: build, run playwright, tear the e2e stack down make e2e-stack-build # build the e2e stack's images, then iterate with `pnpm test` make e2e-stack-stop # stop the e2e stack and drop its data diff --git a/Makefile b/Makefile index 2fe96fe4..10b84496 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,25 @@ e2e-stack-build: e2e-stack-stop: @$(QUIET) "stopping the stack" $(E2E_COMPOSE) down -v +# lint gates of every component that has one, from one place. Fixing and +# checking mirror each component's own vocabulary: web and e2e pair +# lint/check-lint, auth-realtime folds its type/lint/format gates into +# qa-fix/qa (it has no tests), and core wraps golangci-lint. Datagen has +# no lint setup and is deliberately absent. +.PHONY: lint +lint: + @$(QUIET) "linting web" sh -c 'cd web && pnpm run lint' + @$(QUIET) "linting auth-realtime" sh -c 'cd server/auth-realtime && pnpm run qa-fix' + @$(QUIET) "linting core" sh -c 'cd server/core && make lint' + @$(QUIET) "linting e2e" sh -c 'cd e2e && pnpm run lint' + +.PHONY: check-lint +check-lint: + @$(QUIET) "checking web" sh -c 'cd web && pnpm run check-lint' + @$(QUIET) "checking auth-realtime" sh -c 'cd server/auth-realtime && pnpm run qa' + @$(QUIET) "checking core" sh -c 'cd server/core && make check-lint' + @$(QUIET) "checking e2e" sh -c 'cd e2e && pnpm run check-lint' + .PHONY: setup setup: cd web && pnpm run setup