Commit Graph

2 Commits

Author SHA1 Message Date
Julien Gautier 879390f016 chore(workspace): tsconfig composite refs + axe-linter false-positive config
CI / scan (pull_request) Successful in 2m20s
CI / commits (pull_request) Successful in 2m42s
CI / check (pull_request) Successful in 3m38s
CI / a11y (pull_request) Successful in 1m19s
CI / perf (pull_request) Successful in 5m24s
Three editor-noise sources, three matching tame:

* Add `composite: true` to lib tsconfig.lib.json files (shared/ui,
  shared/state, feature/auth) and let `nx sync` redirect consumer
  references in apps/portal-{shell,admin}/tsconfig.app.json to point
  at the .lib.json directly. Silences TS6306 ("Referenced project
  must have setting composite: true") that the TS service raises on
  the project references our Nx 22 lib generator emits.

* Add `ignoreDeprecations: "5.0"` on apps/portal-bff/tsconfig.{app,
  spec}.json. Both inherit `moduleResolution: node` / `node10` which
  TS 7.0 will remove; the diagnostic itself suggests the opt-out
  knob. The TS 5.9 we run only accepts "5.0" as the value (the
  warning text mentions "6.0" but TS rejects it). Migration to
  nodenext/node16 is a separate chantier — too entangled with Nest
  CJS semantics for a drive-by.

* Add a repo-level .axe-linter.yml that disables the `list` rule
  globally. axe Linter (VS Code) doesn't understand Angular 17+
  `@for` blocks and flags `@for (...) { <li>… }` as a non-<li>
  child of <ul>/<ol>. Compiler erases the syntax at build time;
  axe-playwright (ADR-0016) operates on the rendered DOM and is
  unaffected.
2026-05-15 12:05:16 +02:00
Julien Gautier bea5e1954f 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).
2026-04-30 16:12:42 +02:00