Skip to content

ci: add minimal lint/typecheck floor for the monorepo - #2

Open
maonakamoto wants to merge 1 commit into
masterfrom
ci/typecheck-floor
Open

ci: add minimal lint/typecheck floor for the monorepo#2
maonakamoto wants to merge 1 commit into
masterfrom
ci/typecheck-floor

Conversation

@maonakamoto

Copy link
Copy Markdown
Owner

What

Adds a minimal CI floor so this microservice scaffold can't rot — a compile/type gate only, no test suite introduced.

Repo shape

npm-workspaces monorepo: 4 backend services (services/api-gateway, matching, notification, reporting) + shared/types (all TS), plus a standalone Next.js frontend/ (its own lockfile, not a workspace).

Changes (additive, low-risk)

  • verify script (root, SSOT) — builds shared/types, then type-checks every service and the frontend. Ordered because services import the shared package via its built dist/index.d.ts.
  • frontend typecheck scripttsc --noEmit (the frontend had none).
  • Root lint/typecheck/clean workspace scripts now use --if-present.
  • .github/workflows/ci.yml — runs npm run verify on push/PR (Node 20 LTS). CI runs the same SSOT script, so local green == CI green.
  • package-lock.json refreshed — root lock was out of sync with package.json; regenerated so CI npm ci succeeds.

Intentionally NOT gated (needs a human/dependency decision)

  • Lint. Services ship no ESLint config (and 3 of 4 lack the eslint dep). The frontend's eslint-config-next@16 + eslint@9 + next@14 combination currently crashes ESLint (Converting circular structure to JSON), and next lint (Next 14) drops into an interactive setup prompt against the flat config. Wiring lint requires dependency changes, out of scope for an additive floor.
  • Running services / E2E. Needs docker-compose + Postgres + Redis; the floor deliberately stays at lint/typecheck.

Verification

All constituent steps pass locally (each tsc exited 0: shared/types build, all 5 workspace type-checks, frontend type-check). CI is the authoritative gate.

🤖 Generated with Claude Code

Adds a CI floor so the scaffold can't rot, without introducing a test suite.

- Add root `verify` script (SSOT): builds the shared types package, then
  type-checks every backend service and the frontend.
- Add `typecheck` script to the frontend (tsc --noEmit).
- Make root lint/typecheck/clean workspace scripts use `--if-present`.
- Add `.github/workflows/ci.yml` running `npm run verify` on push/PR (Node 20).
- Refresh root package-lock.json (was out of sync, so `npm ci` can succeed).

Scope notes (documented in ci.yml): lint is not gated yet — services ship no
ESLint config and the frontend's eslint-config-next@16 / eslint@9 / next@14
combo crashes ESLint; wiring lint needs dependency changes. Running the
services / E2E needs docker-compose + Postgres + Redis infra, so it's out of
scope for this compile/type floor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant