feat(portal-self-service): Nx workspace + self-service app scaffold (closes #65) #69

Merged
not merged 6 commits from feat/65-nx-workspace into main 2026-07-01 10:22:54 +00:00
Contributor

What & why

S-08a — the frontend foundation. #9 (S-08) was split (CLAUDE.md §13) into #65–#68; this is the
first: an Nx (pnpm) monorepo at the repo root with the self-service Angular app
(standalone + signals), lint/test/build green in a new CI Node lane. A placeholder page renders; the
generated API client (#66), NL DS + DigiD submit form (#67), and Playwright e2e (#68) follow.

Closes #65

Definition of Done

  • Linked Gitea issue (above).
  • Failing test before implementation (test: placeholder render → red, feat: → green).
  • Conventional Commits referencing the issue (refs #65).
  • CI: new frontend lane (lint/test/build) green; .NET lanes unchanged.
  • Docs — docs/frontend-decisions.md + demo note.
  • Demo note in docs/demo-script.md.

Notes for reviewers

  • Nx scoped to apps/+libs/ only. @nx/docker/@nx/dotnet are not installed — the .NET
    services stay on dotnet/the Makefile, and @nx/docker would otherwise infer every
    services/*/Dockerfile as an unnamed Nx project and break the graph.
  • No Nx Cloud (nxCloudId stripped) and no committed Nx "configure-ai-agents" output — those
    reference external/GitHub services, against §8.7. (Nx leaves an uncommitted CLAUDE.md append +
    .claude/settings.json locally; intentionally excluded from this PR.)
  • pnpm build approvals: native builds (@parcel/watcher, esbuild, lmdb, …) are approved in
    pnpm-workspace.yaml under allowBuilds — pnpm 11 fails the install otherwise.
  • Tests: Vitest via Angular's built-in @angular/build:unit-test; Angular Testing Library +
    NL DS arrive with the real form (#67). Rationale captured in docs/frontend-decisions.md.
  • Large diff is mostly pnpm-lock.yaml.

🤖 Generated with Claude Code

## What & why **S-08a** — the frontend foundation. #9 (S-08) was split (CLAUDE.md §13) into #65–#68; this is the first: an **Nx (pnpm) monorepo** at the repo root with the **`self-service` Angular app** (standalone + signals), lint/test/build green in a new CI Node lane. A placeholder page renders; the generated API client (#66), NL DS + DigiD submit form (#67), and Playwright e2e (#68) follow. Closes #65 ## Definition of Done - [x] Linked Gitea issue (above). - [x] Failing test before implementation (`test:` placeholder render → red, `feat:` → green). - [x] Conventional Commits referencing the issue (`refs #65`). - [x] CI: new `frontend` lane (lint/test/build) green; .NET lanes unchanged. - [x] Docs — `docs/frontend-decisions.md` + demo note. - [x] Demo note in `docs/demo-script.md`. ## Notes for reviewers - **Nx scoped to `apps/`+`libs/` only.** `@nx/docker`/`@nx/dotnet` are **not** installed — the .NET services stay on `dotnet`/the Makefile, and `@nx/docker` would otherwise infer every `services/*/Dockerfile` as an unnamed Nx project and break the graph. - **No Nx Cloud** (`nxCloudId` stripped) and **no committed Nx "configure-ai-agents" output** — those reference external/GitHub services, against §8.7. (Nx leaves an uncommitted CLAUDE.md append + `.claude/settings.json` locally; intentionally excluded from this PR.) - **pnpm build approvals:** native builds (`@parcel/watcher`, `esbuild`, `lmdb`, …) are approved in `pnpm-workspace.yaml` under `allowBuilds` — pnpm 11 fails the install otherwise. - **Tests:** Vitest via Angular's built-in `@angular/build:unit-test`; Angular Testing Library + NL DS arrive with the real form (#67). Rationale captured in `docs/frontend-decisions.md`. - Large diff is mostly `pnpm-lock.yaml`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
not added 5 commits 2026-07-01 09:59:03 +00:00
S-08 (#9) bundled the Nx bootstrap, generated client, NL DS + DigiD form and a
full-stack Playwright e2e — past the 1-2 day line (CLAUDE.md §13). Closed #9 in
favour of #65 (Nx workspace + CI lane), #66 (api-client), #67 (submit form + a11y),
#68 (Playwright e2e + compose serving).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bootstrap the Nx (pnpm) workspace at the repo root with the self-service Angular
app (standalone + signals, Vitest via @angular/build, ESLint) — the frontend
foundation. Nx is scoped to apps/+libs/ only; the .NET services stay on
dotnet/Makefile (no @nx/docker inference). A failing test asserts the app renders
a 'Zelfservice' heading; it still shows the generated Nx welcome page, so it fails.
Green commit implements the placeholder.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the generated Nx welcome page with a minimal self-service placeholder
(Dutch 'Zelfservice — BIG-registratie' heading + router-outlet); drop nx-welcome.
The login + submit form arrive in S-08c.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a make frontend target (pnpm install --frozen-lockfile + nx run-many -t lint
test build) and a CI 'frontend' job (pnpm + Node 24, pinned action URLs). Wire
frontend into make ci. The .NET lanes are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
docs(portal-self-service): frontend-decisions + demo note for S-08a (refs #65)
Some checks failed
CI / lint (pull_request) Failing after 1m8s
CI / build (pull_request) Successful in 53s
CI / unit (pull_request) Successful in 1m5s
CI / mutation (pull_request) Has been cancelled
CI / verify-stack (pull_request) Has been cancelled
CI / frontend (pull_request) Has been cancelled
fd90c4abe2
Record the workspace/tooling decisions (pnpm, Nx scoped to apps/+libs/, Vitest,
no @nx/docker, no Nx Cloud, Gitea-only) and a demo note for running the placeholder
app. NL DS deferred to S-08c.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
not added the type:slicearea:portal-self-servicearea:infra labels 2026-07-01 09:59:13 +00:00
not added 1 commit 2026-07-01 10:05:49 +00:00
fix(portal-self-service): keep dotnet format green under the shared .editorconfig (refs #65)
All checks were successful
CI / lint (pull_request) Successful in 1m6s
CI / build (pull_request) Successful in 51s
CI / unit (pull_request) Successful in 59s
CI / frontend (pull_request) Successful in 2m27s
CI / mutation (pull_request) Successful in 3m55s
CI / verify-stack (pull_request) Successful in 5m43s
34969659f7
The imported Nx .editorconfig applied a global 2-space indent + charset=utf-8 to
all files, so dotnet format flagged every 4-space C# line and the BOM'd EF migration.
Scope it: [*.cs] keeps 4-space, and the global charset rule is dropped (utf-8 is the
default; the BOM'd generated migration is left alone). Frontend files stay 2-space.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
not merged commit a069ab07a2 into main 2026-07-01 10:22:54 +00:00
Sign in to join this conversation.