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:
+228
-20
@@ -7,21 +7,21 @@
|
||||
},
|
||||
"newProjectRoot": "projects",
|
||||
"projects": {
|
||||
"atomic-design-poc": {
|
||||
"ssp": {
|
||||
"projectType": "application",
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"style": "scss"
|
||||
}
|
||||
},
|
||||
"root": "",
|
||||
"sourceRoot": "src",
|
||||
"root": "apps/ssp",
|
||||
"sourceRoot": "apps/ssp/src",
|
||||
"prefix": "app",
|
||||
"i18n": {
|
||||
"sourceLocale": { "code": "nl", "subPath": "" },
|
||||
"locales": {
|
||||
"en": {
|
||||
"translation": "src/locale/messages.en.xlf"
|
||||
"translation": "apps/ssp/src/locale/messages.en.xlf"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -29,8 +29,8 @@
|
||||
"build": {
|
||||
"builder": "@angular/build:application",
|
||||
"options": {
|
||||
"browser": "src/main.ts",
|
||||
"tsConfig": "tsconfig.app.json",
|
||||
"browser": "apps/ssp/src/main.ts",
|
||||
"tsConfig": "apps/ssp/tsconfig.app.json",
|
||||
"inlineStyleLanguage": "scss",
|
||||
"assets": [
|
||||
{
|
||||
@@ -38,7 +38,7 @@
|
||||
"input": "public"
|
||||
}
|
||||
],
|
||||
"styles": ["src/styles.scss"],
|
||||
"styles": ["libs/shared/styles.scss"],
|
||||
"polyfills": ["@angular/localize/init"],
|
||||
"i18nMissingTranslation": "error"
|
||||
},
|
||||
@@ -59,8 +59,8 @@
|
||||
"outputHashing": "all",
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
"replace": "libs/shared/src/environments/environment.ts",
|
||||
"with": "libs/shared/src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -77,21 +77,27 @@
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular/build:dev-server",
|
||||
"options": {
|
||||
"proxyConfig": "apps/ssp/proxy.conf.json"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"buildTarget": "atomic-design-poc:build:production"
|
||||
"buildTarget": "ssp:build:production"
|
||||
},
|
||||
"development": {
|
||||
"buildTarget": "atomic-design-poc:build:development"
|
||||
"buildTarget": "ssp:build:development"
|
||||
},
|
||||
"en": {
|
||||
"buildTarget": "atomic-design-poc:build:development,en"
|
||||
"buildTarget": "ssp:build:development,en"
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "development"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular/build:unit-test",
|
||||
"options": {
|
||||
"tsConfig": "apps/ssp/tsconfig.spec.json"
|
||||
},
|
||||
"configurations": {
|
||||
"coverage": {
|
||||
"coverage": true,
|
||||
@@ -100,9 +106,8 @@
|
||||
"**/*.spec.ts",
|
||||
"**/*.stories.ts",
|
||||
"**/contracts/**",
|
||||
"src/app/shared/infrastructure/api-client.ts",
|
||||
"src/main.ts",
|
||||
"src/test-setup.ts",
|
||||
"libs/shared/src/infrastructure/api-client.ts",
|
||||
"apps/ssp/src/main.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
@@ -111,8 +116,8 @@
|
||||
"storybook": {
|
||||
"builder": "@storybook/angular:start-storybook",
|
||||
"options": {
|
||||
"configDir": ".storybook",
|
||||
"browserTarget": "atomic-design-poc:build",
|
||||
"configDir": ".storybook-ssp",
|
||||
"browserTarget": "ssp:build",
|
||||
"compodoc": false,
|
||||
"port": 6006
|
||||
}
|
||||
@@ -120,14 +125,217 @@
|
||||
"build-storybook": {
|
||||
"builder": "@storybook/angular:build-storybook",
|
||||
"options": {
|
||||
"configDir": ".storybook",
|
||||
"browserTarget": "atomic-design-poc:build",
|
||||
"configDir": ".storybook-ssp",
|
||||
"browserTarget": "ssp:build",
|
||||
"compodoc": true,
|
||||
"compodocArgs": ["-e", "json", "-d", "."],
|
||||
"compodocArgs": ["-e", "json", "-d", ".storybook-ssp"],
|
||||
"outputDir": "storybook-static"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"behandelportal": {
|
||||
"projectType": "application",
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"style": "scss"
|
||||
}
|
||||
},
|
||||
"root": "apps/behandelportal",
|
||||
"sourceRoot": "apps/behandelportal/src",
|
||||
"prefix": "app",
|
||||
"i18n": {
|
||||
"sourceLocale": { "code": "nl", "subPath": "" },
|
||||
"locales": {
|
||||
"en": {
|
||||
"translation": "apps/behandelportal/src/locale/messages.en.xlf"
|
||||
}
|
||||
}
|
||||
},
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular/build:application",
|
||||
"options": {
|
||||
"browser": "apps/behandelportal/src/main.ts",
|
||||
"tsConfig": "apps/behandelportal/tsconfig.app.json",
|
||||
"inlineStyleLanguage": "scss",
|
||||
"assets": [
|
||||
{
|
||||
"glob": "**/*",
|
||||
"input": "public"
|
||||
}
|
||||
],
|
||||
"styles": ["libs/shared/styles.scss"],
|
||||
"polyfills": ["@angular/localize/init"],
|
||||
"i18nMissingTranslation": "error"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"budgets": [
|
||||
{
|
||||
"type": "initial",
|
||||
"maximumWarning": "1.5MB",
|
||||
"maximumError": "2MB"
|
||||
},
|
||||
{
|
||||
"type": "anyComponentStyle",
|
||||
"maximumWarning": "4kB",
|
||||
"maximumError": "8kB"
|
||||
}
|
||||
],
|
||||
"outputHashing": "all",
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "libs/shared/src/environments/environment.ts",
|
||||
"with": "libs/shared/src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"development": {
|
||||
"optimization": false,
|
||||
"extractLicenses": false,
|
||||
"sourceMap": true
|
||||
},
|
||||
"en": {
|
||||
"localize": ["en"]
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "production"
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular/build:dev-server",
|
||||
"options": {
|
||||
"port": 4201,
|
||||
"proxyConfig": "apps/behandelportal/proxy.conf.json"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"buildTarget": "behandelportal:build:production"
|
||||
},
|
||||
"development": {
|
||||
"buildTarget": "behandelportal:build:development"
|
||||
},
|
||||
"en": {
|
||||
"buildTarget": "behandelportal:build:development,en"
|
||||
}
|
||||
},
|
||||
"defaultConfiguration": "development"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular/build:unit-test",
|
||||
"options": {
|
||||
"tsConfig": "apps/behandelportal/tsconfig.spec.json"
|
||||
},
|
||||
"configurations": {
|
||||
"coverage": {
|
||||
"coverage": true,
|
||||
"coverageReporters": ["text-summary", "html", "lcov"],
|
||||
"coverageExclude": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.stories.ts",
|
||||
"**/contracts/**",
|
||||
"libs/shared/src/infrastructure/api-client.ts",
|
||||
"apps/behandelportal/src/main.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"storybook": {
|
||||
"builder": "@storybook/angular:start-storybook",
|
||||
"options": {
|
||||
"configDir": ".storybook-behandelportal",
|
||||
"browserTarget": "behandelportal:build",
|
||||
"compodoc": false,
|
||||
"port": 6007
|
||||
}
|
||||
},
|
||||
"build-storybook": {
|
||||
"builder": "@storybook/angular:build-storybook",
|
||||
"options": {
|
||||
"configDir": ".storybook-behandelportal",
|
||||
"browserTarget": "behandelportal:build",
|
||||
"compodoc": true,
|
||||
"compodocArgs": ["-e", "json", "-d", ".storybook-behandelportal"],
|
||||
"outputDir": "storybook-static-behandelportal"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shared": {
|
||||
"projectType": "library",
|
||||
"root": "libs/shared",
|
||||
"sourceRoot": "libs/shared/src",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular/build:application",
|
||||
"options": {
|
||||
"browser": "libs/shared/src/test-entry.ts",
|
||||
"tsConfig": "libs/shared/tsconfig.app.json"
|
||||
},
|
||||
"configurations": {
|
||||
"development": {}
|
||||
},
|
||||
"defaultConfiguration": "development"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular/build:unit-test",
|
||||
"options": {
|
||||
"tsConfig": "libs/shared/tsconfig.spec.json"
|
||||
},
|
||||
"configurations": {
|
||||
"coverage": {
|
||||
"coverage": true,
|
||||
"coverageReporters": ["text-summary", "html", "lcov"],
|
||||
"coverageExclude": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.stories.ts",
|
||||
"**/contracts/**",
|
||||
"src/infrastructure/api-client.ts",
|
||||
"src/test-entry.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"beheer": {
|
||||
"projectType": "library",
|
||||
"root": "libs/beheer",
|
||||
"sourceRoot": "libs/beheer/src",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular/build:application",
|
||||
"options": {
|
||||
"browser": "libs/beheer/src/test-entry.ts",
|
||||
"tsConfig": "libs/beheer/tsconfig.app.json"
|
||||
},
|
||||
"configurations": {
|
||||
"development": {}
|
||||
},
|
||||
"defaultConfiguration": "development"
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular/build:unit-test",
|
||||
"options": {
|
||||
"tsConfig": "libs/beheer/tsconfig.spec.json"
|
||||
},
|
||||
"configurations": {
|
||||
"coverage": {
|
||||
"coverage": true,
|
||||
"coverageReporters": ["text-summary", "html", "lcov"],
|
||||
"coverageExclude": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.stories.ts",
|
||||
"**/contracts/**",
|
||||
"src/test-entry.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user