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>
This commit is contained in:
@@ -1,195 +1,516 @@
|
||||
# Dependency graph
|
||||
|
||||
_Generated by `npm run dep:graph` — do not edit by hand._ Nodes are context × atomic
|
||||
layer (`src/app/<context>/<layer>`); edges are real imports. The allowed edges are
|
||||
enforced by `npm run dep:check` (dependency-cruiser); see [dependencies.md](./dependencies.md).
|
||||
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["src"]
|
||||
subgraph 1["app"]
|
||||
2["app.config.ts"]
|
||||
3["app.routes.ts"]
|
||||
4["app.ts"]
|
||||
subgraph 5["auth"]
|
||||
6["application"]
|
||||
7["auth.guard.spec.ts"]
|
||||
8["auth.guard.ts"]
|
||||
9["domain"]
|
||||
A["infrastructure"]
|
||||
B["ui"]
|
||||
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
|
||||
subgraph C["beheer"]
|
||||
D["application"]
|
||||
E["contracts"]
|
||||
F["domain"]
|
||||
G["infrastructure"]
|
||||
H["ui"]
|
||||
D["main.ts"]
|
||||
end
|
||||
subgraph I["brief"]
|
||||
J["application"]
|
||||
K["domain"]
|
||||
L["infrastructure"]
|
||||
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
|
||||
subgraph N["herregistratie"]
|
||||
O["application"]
|
||||
P["domain"]
|
||||
Q["infrastructure"]
|
||||
R["ui"]
|
||||
end
|
||||
subgraph S["registratie"]
|
||||
T["application"]
|
||||
U["contracts"]
|
||||
V["domain"]
|
||||
W["infrastructure"]
|
||||
X["ui"]
|
||||
end
|
||||
subgraph Y["shared"]
|
||||
Z["application"]
|
||||
10["domain"]
|
||||
11["infrastructure"]
|
||||
12["kernel"]
|
||||
13["layout"]
|
||||
14["ui"]
|
||||
15["upload"]
|
||||
end
|
||||
subgraph 16["showcase"]
|
||||
17["concepts.page.ts"]
|
||||
18["highlight-ts.spec.ts"]
|
||||
19["highlight-ts.ts"]
|
||||
1A["snippets.generated.ts"]
|
||||
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
|
||||
2-->3
|
||||
2-->6
|
||||
2-->Z
|
||||
2-->11
|
||||
2-->13
|
||||
3-->17
|
||||
3-->8
|
||||
3-->B
|
||||
3-->H
|
||||
3-->M
|
||||
3-->R
|
||||
3-->X
|
||||
3-->Z
|
||||
3-->13
|
||||
6-->9
|
||||
6-->A
|
||||
6-->12
|
||||
7-->6
|
||||
7-->8
|
||||
7-->Z
|
||||
8-->6
|
||||
8-->Z
|
||||
8-->10
|
||||
A-->9
|
||||
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
|
||||
B-->6
|
||||
B-->13
|
||||
B-->14
|
||||
D-->F
|
||||
D-->G
|
||||
D-->Z
|
||||
D-->12
|
||||
F-->12
|
||||
G-->F
|
||||
G-->11
|
||||
G-->12
|
||||
G-->Z
|
||||
H-->D
|
||||
H-->Z
|
||||
H-->13
|
||||
H-->14
|
||||
H-->F
|
||||
J-->K
|
||||
J-->L
|
||||
J-->Z
|
||||
J-->12
|
||||
J-->15
|
||||
K-->12
|
||||
K-->15
|
||||
L-->K
|
||||
L-->Z
|
||||
L-->11
|
||||
L-->12
|
||||
M-->J
|
||||
M-->13
|
||||
M-->14
|
||||
M-->K
|
||||
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-->Z
|
||||
M-->15
|
||||
O-->P
|
||||
O-->Q
|
||||
P-->V
|
||||
P-->12
|
||||
P-->15
|
||||
Q-->P
|
||||
Q-->11
|
||||
Q-->12
|
||||
R-->P
|
||||
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-->12
|
||||
R-->13
|
||||
R-->14
|
||||
R-->15
|
||||
R-->O
|
||||
R-->V
|
||||
R-->11
|
||||
T-->U
|
||||
T-->V
|
||||
T-->W
|
||||
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-->11
|
||||
T-->12
|
||||
V-->12
|
||||
V-->15
|
||||
W-->V
|
||||
W-->11
|
||||
W-->12
|
||||
W-->U
|
||||
X-->V
|
||||
X-->14
|
||||
X-->T
|
||||
X-->13
|
||||
X-->Z
|
||||
X-->12
|
||||
X-->10
|
||||
X-->U
|
||||
X-->15
|
||||
X-->11
|
||||
Z-->12
|
||||
Z-->11
|
||||
Z-->10
|
||||
11-->10
|
||||
11-->12
|
||||
13-->14
|
||||
13-->10
|
||||
13-->Z
|
||||
14-->15
|
||||
14-->Z
|
||||
14-->12
|
||||
14-->6
|
||||
14-->9
|
||||
14-->T
|
||||
14-->10
|
||||
14-->11
|
||||
14-->V
|
||||
15-->12
|
||||
15-->Z
|
||||
15-->11
|
||||
17-->19
|
||||
17-->1A
|
||||
17-->R
|
||||
17-->V
|
||||
17-->X
|
||||
17-->12
|
||||
17-->13
|
||||
17-->14
|
||||
18-->19
|
||||
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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user