chore: generate portal-shell and portal-bff apps per ADR-0004 / ADR-0005
Add the @nx/angular, @nx/nest, @nx/vite, @nx/eslint plugins, then generate the two apps. Adjust the empty-template tsconfig.base.json to be Angular-compatible (drop project references and customConditions that the empty-template defaults to but Angular doesn't support; keep the strict-TS extensions from ADR-0004). apps/portal-shell (Angular 21): - standalone APIs, routing, SCSS, esbuild - vitest-angular as unitTestRunner, playwright for e2e - strict mode - tags scope:portal-shell, type:app - app.config.ts wired with provideZonelessChangeDetection() per ADR-0004 (Angular 21 + Nx 22 generates without zone.js by default) apps/portal-bff (NestJS 11): - Express adapter (default per ADR-0005) - Jest as unitTestRunner - tags scope:portal-bff, type:app - main.ts wired with a global ValidationPipe configured whitelist + forbidNonWhitelisted + transform per ADR-0005 - Phase-2 security additions (helmet, CORS, sessions, CSRF, rate limit, auth guards, error filter) deferred to their respective ADRs - placeholder comment in main.ts Workspace dependencies: class-validator + class-transformer added (required by NestJS ValidationPipe at runtime). Nx-generated .gitignore additions (.angular, __screenshots__) merged into ours. .vscode/extensions.json and launch.json added by Nx are kept (do not override our existing settings.json).
This commit is contained in:
+57
-3
@@ -4,15 +4,69 @@
|
||||
"license": "MIT",
|
||||
"scripts": {},
|
||||
"private": true,
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"@nx/js": "22.7.0",
|
||||
"@angular-devkit/core": "~21.2.0",
|
||||
"@angular-devkit/schematics": "~21.2.0",
|
||||
"@angular/build": "~21.2.0",
|
||||
"@angular/cli": "~21.2.0",
|
||||
"@angular/compiler-cli": "~21.2.0",
|
||||
"@angular/language-service": "~21.2.0",
|
||||
"@eslint/js": "^9.8.0",
|
||||
"@nestjs/schematics": "^11.0.0",
|
||||
"@nestjs/testing": "^11.0.0",
|
||||
"@nx/angular": "^22.7.1",
|
||||
"@nx/devkit": "22.7.1",
|
||||
"@nx/eslint": "^22.7.1",
|
||||
"@nx/eslint-plugin": "22.7.1",
|
||||
"@nx/jest": "22.7.1",
|
||||
"@nx/js": "22.7.1",
|
||||
"@nx/nest": "^22.7.1",
|
||||
"@nx/node": "22.7.1",
|
||||
"@nx/playwright": "22.7.1",
|
||||
"@nx/vite": "^22.7.1",
|
||||
"@nx/web": "22.7.1",
|
||||
"@nx/webpack": "22.7.1",
|
||||
"@oxc-project/runtime": "^0.115.0",
|
||||
"@playwright/test": "^1.36.0",
|
||||
"@schematics/angular": "~21.2.0",
|
||||
"@swc-node/register": "1.11.1",
|
||||
"@swc/core": "1.15.8",
|
||||
"@swc/helpers": "0.5.18",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/node": "20.19.9",
|
||||
"@typescript-eslint/utils": "^8.40.0",
|
||||
"angular-eslint": "^21.2.0",
|
||||
"eslint": "^9.8.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-playwright": "^1.6.2",
|
||||
"jest": "^30.0.2",
|
||||
"jest-environment-node": "^30.0.2",
|
||||
"jest-util": "^30.0.2",
|
||||
"jsdom": "^27.1.0",
|
||||
"nx": "22.7.0",
|
||||
"prettier": "^3.8.1",
|
||||
"ts-jest": "^29.4.0",
|
||||
"ts-node": "10.9.1",
|
||||
"tslib": "^2.3.0",
|
||||
"typescript": "~5.9.2"
|
||||
"typescript": "~5.9.2",
|
||||
"typescript-eslint": "^8.40.0",
|
||||
"vitest": "^4.0.8",
|
||||
"webpack-cli": "^5.1.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/common": "~21.2.0",
|
||||
"@angular/compiler": "~21.2.0",
|
||||
"@angular/core": "~21.2.0",
|
||||
"@angular/forms": "~21.2.0",
|
||||
"@angular/platform-browser": "~21.2.0",
|
||||
"@angular/router": "~21.2.0",
|
||||
"@nestjs/common": "^11.0.0",
|
||||
"@nestjs/core": "^11.0.0",
|
||||
"@nestjs/platform-express": "^11.0.0",
|
||||
"axios": "^1.6.0",
|
||||
"class-transformer": "^0.5.1",
|
||||
"class-validator": "^0.15.1",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rxjs": "~7.8.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user