chore: add a Taskfile facade over the existing commands
CI / changes (push) Successful in 16s
CI / lint (push) Successful in 3m0s
CI / frontend (push) Failing after 3m36s
CI / backend (push) Successful in 2m38s
CI / e2e (push) Failing after 4m14s
CI / storybook-a11y (push) Failing after 7m50s
CI / semgrep (push) Successful in 1m18s
CI / api-client-drift (push) Successful in 1m55s

`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 <noreply@anthropic.com>
This commit is contained in:
eho
2026-09-21 08:56:39 +02:00
co-authored by Claude Opus 5
parent 856463b738
commit 6330773fd5
2 changed files with 94 additions and 0 deletions
+1
View File
@@ -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 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) docker compose up # run both FE apps + backend together (Swagger at :5000/swagger)
cd backend && dotnet test # backend rule + endpoint tests 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 **Two Storybook instances, not one:** `apps/ssp` and `apps/behandelportal` each have their own
+93
View File
@@ -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