Files
strangler-fig-demo/portal-frontend/README.md
T
ehoandClaude Haiku 4.5 ddec15ccb2 docs(architecture): add diagrams and implementation playbook
Added three new documents with nine Mermaid diagrams to make the strangler
fig strategy visible:

- README: container topology diagram at the start, with the proxy entry point
  and three seams labelled
- docs/architecture.md: five diagrams tracing the exact implementation:
  - The four seams and who holds authority at each boundary
  - How by-id read goes through the resolver, but list-read bypasses it
  - Case lifecycle state machine (the strategy in one picture)
  - Take-ownership sequence with failure windows annotated
  - Write-through error round-trip showing zero validation logic crossed
- docs/playbook.md: how to apply this to a production system:
  - Write-path decision tree (five read/write patterns)
  - Cutover ordering diagram (side-effects-free first, least recoverable last)
  - Seven transferable rules with pointers to the files that demonstrate them
  - Scope diagram of what's proven vs. left as your decisions

Resolved all 13 dangling § citations (to an absent spec doc) by linking to
the actual files or dropping them. Replaced portal-frontend/README.md
boilerplate with accurate content. All diagrams parse and link-check clean.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-01 09:15:39 +02:00

881 B

portal-frontend

Session 2's Angular portal — the real UI over the new backend, reachable at http://localhost:8080/portal once the stack is up (docker compose up -d from the repo root). It is served by its own nginx container behind the shared proxy, not by ng serve.

The whole app is driven off the API's actions and seams blocks: it renders whatever write path each case advertises (writeThrough, redirect, owned, transition, query) and never builds an endpoint URL from an id. That is what makes the same screens work unchanged for a legacy-owned case and an adopted one — see docs/architecture.md.

npm test          # unit tests (vitest, via ng test)
npm run build     # production build

This app is zoneless: state written from a subscribe callback must land in a signal, or the DOM will not update.