diff --git a/docs/demo-script.md b/docs/demo-script.md index b457be5..7874781 100644 --- a/docs/demo-script.md +++ b/docs/demo-script.md @@ -168,3 +168,32 @@ curl -fsS http://localhost:8120/register | jq 'length' # → unchanged > `bsn` / `naam_placeholder` are deferred (ADR-0008) — the notification doesn't carry them and > the subscriber may not read OpenZaak directly (§8.1). They surface in a later slice. + +--- + +## S-09 — Openbaar Register portal (public visibility) + +**Outcome:** the entry a zorgprofessional submits via self-service becomes publicly visible in the +anonymous openbaar register portal — closing the walking-skeleton loop (submit → process → projection +→ public visibility). + +**The path:** self-service submit → BFF → domain → (zaak) OpenZaak → NRC → Event Subscriber → +projection → openbaar portal reads the BFF's public-safe `GET /openbaar/register`. + +```bash +# 1. Bring the full stack up (self-service :8140, openbaar :8141). +make up + +# 2. Submit a registration via the self-service portal (mock DigiD: jan-burger / test123), +# or drive the whole happy path automatically (login → submit → public visibility): +make verify-e2e + +# 3. Open the public register — no login. It lists the submitted entry (id + status only). +# Only public-safe fields cross the BFF: bsn / naam never appear. +open http://localhost:8141/ # search box; searches the BFF by referentie +curl -fsS http://localhost:8140/openbaar/register | jq # same public-safe view via the BFF proxy +# → [ { "id": "", "status": "INGEDIEND" } ] +``` + +> The register shows `INGEDIEND` entries today; the approval transition to a terminal status +> (e.g. `INGESCHREVEN`) lands with the approval flow (S-09b, #75). diff --git a/docs/frontend-decisions.md b/docs/frontend-decisions.md index 88ad7fb..19c65e9 100644 --- a/docs/frontend-decisions.md +++ b/docs/frontend-decisions.md @@ -103,3 +103,17 @@ with the submit form (S-08c, #67); any deviation from NL DS will be recorded her touching the app or its production config. - `tests/e2e` is a standalone Playwright project (its own `package.json`), not an Nx project — it's a live-stack check like the other `verify-*` runners, not part of the `frontend` unit lane. + +## Openbaar Register portal (S-09, #10) + +- **Anonymous, no auth.** The openbaar register is a public read, so `apps/openbaar` has no + `angular-auth-oidc-client`, no interceptor, and no `config.json` — `main.ts` bootstraps `appConfig` + directly with just `provideHttpClient` + `provideRouter`. This is the deliberate contrast to + self-service and keeps the app trivially cacheable/CDN-able. +- **Same-origin via nginx, like self-service.** The compose `openbaar` image serves the built app and + reverse-proxies `/openbaar` to the BFF; the api-client's relative calls stay same-origin (no CORS). + Served on `:8141`, health-checked over IPv4 (`127.0.0.1`), no Keycloak dependency. +- **Public-safe by construction.** The portal only ever sees the BFF's `OpenbaarProjection.PublicView` + (id + status); `bsn`/`naam` never leave the BFF. The e2e asserts the bsn never renders. +- **Loads on open, filters on search.** `RegisterPage` fetches the full register on construction and + re-queries `/openbaar/register?q=` on search — no client-side filtering, the BFF owns the query.