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>
517 lines
5.2 KiB
Markdown
517 lines
5.2 KiB
Markdown
# 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
|
||
```
|