Files
ehoandClaude Sonnet 5 e7156c5132 feat(WP-67): merge behandelportal into this repo as a monorepo
Restructures into apps/ssp + apps/behandelportal (two Angular projects)
plus libs/shared + libs/beheer (cross-app libraries), replacing WP-61's
separate sibling repo. That split had already produced real drift: a
hand-vendored copy of the backend's OpenAPI doc, a shared/ui+layout tree
forked and silently diverging (7 files), and beheer + the styles.scss
token bridge duplicated byte-for-byte across both repos.

- git mv the SSP's src/app/* into apps/ssp/; fold shared/, beheer/,
  environments/, the Storybook docs/*.mdx, and styles.scss into
  libs/shared + libs/beheer (all confirmed identical between the two
  repos before merging). auth stays deliberately duplicated per
  ADR-0002 (actor-specific, expected to diverge) - amended there.
- One generated API client (libs/shared), no more vendored swagger.json.
- .dependency-cruiser split into a base factory + one config per app,
  and Storybook into .storybook-ssp/.storybook-behandelportal - both
  forced by the @auth/* alias resolving to different directories per app.
- SiteHeaderComponent/ShellComponent gained HEADER_NAV_ITEMS/
  HEADER_ADMIN_LINKS/DEBUG_PANEL injection tokens so each app supplies
  its own nav/admin-links/dev-panel instead of one being hardcoded.
- CLAUDE.md, ARCHITECTURE.md, dependencies.md, and ADR-0002 updated;
  WP-67 backlog entry documents the full decision trail.

npm run ci green (lint, dep:check x2, 360 tests across ssp/
behandelportal/shared/beheer, both localized builds, backend tests,
snippet + api-client drift); both dev servers, both Storybook
instances, and docker compose verified working.

The old sibling repo (/home/eho/repos/behandelportal) is left
untouched, not deleted.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 21:01:57 +02:00

517 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dependency graph
_Generated by `npm run dep:graph` — do not edit by hand._ Nodes are context × atomic
layer (`apps/<app>/src/app/<context>/<layer>` or `libs/<lib>/src/<layer>`); edges are
real imports. The allowed edges are enforced by `npm run dep:check` (dependency-cruiser,
one config per app — see [dependencies.md](./dependencies.md)).
## ssp
```mermaid
flowchart LR
subgraph 0["apps"]
subgraph 1["ssp"]
subgraph 2["src"]
subgraph 3["app"]
4["app.config.ts"]
5["app.routes.ts"]
6["app.ts"]
7["auth"]
8["brief"]
9["herregistratie"]
A["registratie"]
B["shell"]
C["showcase"]
end
D["main.ts"]
end
end
end
subgraph E["libs"]
subgraph F["beheer"]
subgraph G["src"]
H["application"]
I["contracts"]
J["domain"]
K["infrastructure"]
L["test-entry.ts"]
M["ui"]
end
end
subgraph N["shared"]
subgraph O["src"]
P["application"]
Q["domain"]
R["environments"]
S["infrastructure"]
T["kernel"]
U["layout"]
V["test-entry.ts"]
W["ui"]
X["upload"]
end
end
end
subgraph Y["node_modules"]
subgraph Z["@angular"]
subgraph 10["common"]
subgraph 11["fesm2022"]
12["common.mjs"]
13["http.mjs"]
end
subgraph 14["locales"]
15["en.js"]
16["nl.js"]
end
end
subgraph 17["core"]
subgraph 18["fesm2022"]
19["core.mjs"]
1A["rxjs-interop.mjs"]
1B["testing.mjs"]
end
end
subgraph 1C["forms"]
subgraph 1D["fesm2022"]
1E["forms.mjs"]
end
end
subgraph 1F["localize"]
subgraph 1G["fesm2022"]
1H["localize.mjs"]
end
end
subgraph 1I["platform-browser"]
subgraph 1J["fesm2022"]
1K["platform-browser.mjs"]
end
end
subgraph 1L["router"]
subgraph 1M["fesm2022"]
1N["router.mjs"]
end
end
end
subgraph 1O["@storybook"]
subgraph 1P["angular"]
subgraph 1Q["dist"]
1R["index.js"]
end
end
end
subgraph 1S["rxjs"]
subgraph 1T["dist"]
subgraph 1U["cjs"]
1V["index.js"]
subgraph 1W["operators"]
1X["index.js"]
end
end
end
end
subgraph 1Y["storybook"]
subgraph 1Z["dist"]
subgraph 20["test"]
21["index.js"]
end
end
end
subgraph 22["vitest"]
subgraph 23["dist"]
24["index.js"]
end
end
end
4-->5
4-->B
4-->12
4-->13
4-->15
4-->16
4-->19
4-->1N
4-->7
4-->P
4-->S
4-->U
5-->C
5-->1N
5-->7
5-->M
5-->8
5-->9
5-->A
5-->P
5-->U
6-->19
6-->1N
7-->19
7-->1N
7-->P
7-->Q
7-->T
7-->U
7-->W
7-->1E
7-->1B
7-->24
7-->1R
8-->19
8-->U
8-->W
8-->P
8-->T
8-->X
8-->S
8-->R
8-->1E
8-->12
8-->1B
8-->24
8-->1R
9-->19
9-->1E
9-->A
9-->P
9-->T
9-->U
9-->W
9-->X
9-->S
9-->24
9-->13
9-->1R
9-->1B
A-->T
A-->19
A-->P
A-->S
A-->1N
A-->12
A-->W
A-->U
A-->B
A-->Q
A-->1E
A-->X
A-->1B
A-->24
A-->1R
A-->13
B-->Q
B-->U
B-->12
B-->19
B-->7
B-->A
B-->P
B-->S
B-->T
B-->1R
C-->19
C-->1E
C-->9
C-->A
C-->T
C-->U
C-->W
C-->24
D-->6
D-->4
D-->1H
D-->1K
H-->19
H-->J
H-->K
H-->P
H-->1B
H-->T
H-->24
J-->T
J-->24
K-->19
K-->J
K-->S
K-->T
K-->P
K-->24
M-->12
M-->19
M-->H
M-->P
M-->U
M-->W
M-->J
M-->1R
P-->19
P-->T
P-->1N
P-->S
P-->1A
P-->Q
P-->1V
P-->24
P-->1B
S-->13
S-->19
S-->R
S-->1V
S-->Q
S-->T
S-->1X
S-->24
T-->24
U-->19
U-->1E
U-->W
U-->Q
U-->12
U-->1N
U-->1A
U-->1V
U-->P
U-->1X
U-->1R
U-->24
W-->19
W-->1E
W-->X
W-->12
W-->1N
W-->P
W-->T
W-->1R
W-->21
W-->24
X-->T
X-->19
X-->P
X-->S
X-->R
X-->24
```
## behandelportal
```mermaid
flowchart LR
subgraph 0["apps"]
subgraph 1["behandelportal"]
subgraph 2["src"]
subgraph 3["app"]
4["app.config.ts"]
5["app.routes.ts"]
6["app.ts"]
7["auth"]
8["behandeling"]
9["shell"]
end
A["main.ts"]
end
end
end
subgraph B["libs"]
subgraph C["beheer"]
subgraph D["src"]
E["application"]
F["contracts"]
G["domain"]
H["infrastructure"]
I["test-entry.ts"]
J["ui"]
end
end
subgraph K["shared"]
subgraph L["src"]
M["application"]
N["domain"]
O["environments"]
P["infrastructure"]
Q["kernel"]
R["layout"]
S["test-entry.ts"]
T["ui"]
U["upload"]
end
end
end
subgraph V["node_modules"]
subgraph W["@angular"]
subgraph X["common"]
subgraph Y["fesm2022"]
Z["common.mjs"]
10["http.mjs"]
end
subgraph 11["locales"]
12["en.js"]
13["nl.js"]
end
end
subgraph 14["core"]
subgraph 15["fesm2022"]
16["core.mjs"]
17["rxjs-interop.mjs"]
18["testing.mjs"]
end
end
subgraph 19["forms"]
subgraph 1A["fesm2022"]
1B["forms.mjs"]
end
end
subgraph 1C["localize"]
subgraph 1D["fesm2022"]
1E["localize.mjs"]
end
end
subgraph 1F["platform-browser"]
subgraph 1G["fesm2022"]
1H["platform-browser.mjs"]
end
end
subgraph 1I["router"]
subgraph 1J["fesm2022"]
1K["router.mjs"]
end
end
end
subgraph 1L["@storybook"]
subgraph 1M["angular"]
subgraph 1N["dist"]
1O["index.js"]
end
end
end
subgraph 1P["rxjs"]
subgraph 1Q["dist"]
subgraph 1R["cjs"]
1S["index.js"]
subgraph 1T["operators"]
1U["index.js"]
end
end
end
end
subgraph 1V["storybook"]
subgraph 1W["dist"]
subgraph 1X["test"]
1Y["index.js"]
end
end
end
subgraph 1Z["vitest"]
subgraph 20["dist"]
21["index.js"]
end
end
end
4-->5
4-->9
4-->Z
4-->10
4-->12
4-->13
4-->16
4-->1K
4-->7
4-->M
4-->P
4-->R
5-->1K
5-->7
5-->8
5-->J
5-->R
6-->16
6-->1K
7-->16
7-->1K
7-->M
7-->N
7-->Q
7-->R
7-->T
7-->1B
7-->18
7-->21
7-->1O
8-->16
8-->R
9-->R
A-->6
A-->4
A-->1E
A-->1H
E-->16
E-->G
E-->H
E-->M
E-->18
E-->Q
E-->21
G-->Q
G-->21
H-->16
H-->G
H-->P
H-->Q
H-->M
H-->21
J-->Z
J-->16
J-->E
J-->M
J-->R
J-->T
J-->G
J-->1O
M-->16
M-->17
M-->N
M-->P
M-->1S
M-->Q
M-->1K
M-->21
M-->18
P-->16
P-->N
P-->Q
P-->10
P-->O
P-->1S
P-->1U
P-->21
Q-->21
R-->16
R-->T
R-->Z
R-->1K
R-->17
R-->1S
R-->M
R-->1U
R-->N
R-->1O
R-->21
R-->1B
T-->16
T-->1B
T-->Z
T-->1K
T-->M
T-->1O
T-->1Y
T-->Q
T-->21
T-->U
U-->Q
U-->16
U-->M
U-->P
U-->O
U-->21
```