From 6330773fd53f8d3d2fe3ea6199e92008a6a14af0 Mon Sep 17 00:00:00 2001 From: Edwin van den Houdt Date: Mon, 21 Sep 2026 08:56:39 +0200 Subject: [PATCH] chore: add a Taskfile facade over the existing commands `task` with no arguments lists every runnable command. The Taskfile calls the npm scripts, dotnet and docker compose. It does not duplicate their logic. CI does not need `task`. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 1 + Taskfile.yml | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 Taskfile.yml diff --git a/CLAUDE.md b/CLAUDE.md index 44aead4..84d9485 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,6 +34,7 @@ npm run gen:api # regenerate the ONE typed client (libs/shared) f npm run ci # run the CI gate locally BEFORE pushing (mirrors ci.yml); `npm run ci --full` adds storybook-a11y docker compose up # run both FE apps + backend together (Swagger at :5000/swagger) cd backend && dotnet test # backend rule + endpoint tests +task # list every task (a thin facade over the commands above) ``` **Two Storybook instances, not one:** `apps/ssp` and `apps/behandelportal` each have their own diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..ae848db --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,93 @@ +# ponytail: a thin façade over the npm scripts + dotnet + docker, NOT a second copy of +# package.json. `task` (no args) lists everything runnable; the logic stays where it is — +# `task ci` shells to scripts/ci-local.sh, which remains the gate. npm keeps working +# exactly as before, and CI does not depend on `task` being installed. +version: '3' + +tasks: + default: + silent: true + cmd: task --list + + deps: + internal: true + status: + - test -d node_modules + cmd: npm ci + + dev: + desc: Serve the SSP on :4200 (proxies /api to the backend) + deps: [deps] + cmd: npm start + + dev:bp: + desc: Serve the behandelportal on :4201 + deps: [deps] + cmd: npm run start:behandelportal + + api: + desc: Run the backend on :5000 (Swagger at /swagger) + dir: backend + cmd: dotnet run --project src/BigRegister.Api + + test: + desc: Run the frontend tests (both apps + both shared libraries) + deps: [deps] + cmd: npm test + + test:api: + desc: Run the backend rule + endpoint tests (skips the OpenZaak integration tests) + dir: backend + # Same filter as scripts/ci-local.sh: the Integration tests need a running OpenZaak + # container (scripts/openzaak-ui-up.sh), so they are not part of the default gate. + cmd: dotnet test BigRegister.slnx --filter "Category!=Integration" + + lint: + desc: Lint the frontend (no `any`, import/layer boundaries) + deps: [deps] + cmd: npm run lint + + fmt: + desc: Format the frontend with prettier and the backend with dotnet format + deps: [deps] + cmds: + - npm run format + - dotnet format backend/BigRegister.slnx + + build: + desc: Build both Angular apps + deps: [deps] + cmd: npm run build + + ci: + desc: Run the CI gate locally before pushing (scripts/ci-local.sh) + deps: [deps] + cmd: npm run ci + + e2e: + desc: Run the Playwright end-to-end tests (starts its own servers) + deps: [deps] + cmd: npm run e2e + + sb: + desc: Run the SSP Storybook instance + deps: [deps] + cmd: npm run storybook + + sb:bp: + desc: Run the behandelportal Storybook instance + deps: [deps] + cmd: npm run storybook:behandelportal + + gen:api: + desc: Regenerate the typed API client from the backend OpenAPI document + deps: [deps] + cmd: npm run gen:api + + up: + desc: Start both apps + the backend with docker compose + cmd: docker compose up + + down: + desc: Stop the docker compose stack + cmd: docker compose down