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.
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.
## 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)
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>
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>
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 main2026-07-01 10:22:54 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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-serviceAngular 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
test:placeholder render → red,feat:→ green).refs #65).frontendlane (lint/test/build) green; .NET lanes unchanged.docs/frontend-decisions.md+ demo note.docs/demo-script.md.Notes for reviewers
apps/+libs/only.@nx/docker/@nx/dotnetare not installed — the .NETservices stay on
dotnet/the Makefile, and@nx/dockerwould otherwise infer everyservices/*/Dockerfileas an unnamed Nx project and break the graph.nxCloudIdstripped) and no committed Nx "configure-ai-agents" output — thosereference external/GitHub services, against §8.7. (Nx leaves an uncommitted CLAUDE.md append +
.claude/settings.jsonlocally; intentionally excluded from this PR.)@parcel/watcher,esbuild,lmdb, …) are approved inpnpm-workspace.yamlunderallowBuilds— pnpm 11 fails the install otherwise.@angular/build:unit-test; Angular Testing Library +NL DS arrive with the real form (#67). Rationale captured in
docs/frontend-decisions.md.pnpm-lock.yaml.🤖 Generated with Claude Code