--- name: new-ssp description: Bootstrap a new self-service portal from this repo as a template — what to keep, strip, rename, and re-seed. Use when starting a new SSP for a different domain/register. --- # New SSP from this template The template's value is the **enforced architecture** (layer fences, token gate, a11y gate, API-drift gate) and the shared building blocks — not the BIG-register business content. Keep the machinery, replace the domain. ## Keep as-is - `src/app/shared/` — kernel (`fp.ts`), application (`remote-data`, `store`, `submit`), ui atoms/molecules, layout templates, upload subtree. - Tooling: `eslint.config.mjs`, `scripts/check-tokens.sh`, `.github/workflows/ci.yml`, `nswag.json`, `.storybook/`, `proxy.conf.json`, `.npmrc` (`legacy-peer-deps` — and never `npm audit fix --force`, it downgrades Angular). - `src/app/auth/` (fake auth shell) and `src/app/shared/infrastructure/scenario.interceptor.ts` (dev-only). - `docs/architecture/` ADRs 0001–0003 — the decisions still apply; amend, don't delete. - `CLAUDE.md`, `docs/ARCHITECTURE.md`, `docs/fp-tea-atomic-design.md` — update names/examples as contexts change. - `.claude/skills/` — these recipes are the point of the template. ## Strip / replace - Business contexts `registratie/`, `herregistratie/`, `brief/`, and `showcase/`: delete or keep one slice temporarily as the worked example while building the first real context (**new-context** + **new-feature** skills). If deleted, update the worked-example paths in these skills to the new flagship context. - `app.routes.ts` routes and `tsconfig.json` aliases for removed contexts, plus their eslint blocks in `eslint.config.mjs`. - Backend: keep the skeleton (`Program.cs` minimal-API style, ProblemDetails 422, `X-Correlation-Id` audit line, `/api/v1` versioning, `Contracts/`/`Domain/`/`Data/` split, test project) — replace `Data/SeedData.cs`, `Domain/*` rules, and `Contracts/*` DTOs with the new domain's. Rename the solution/projects from `BigRegister.*` (also update `package.json` `gen:api` and `ci.yml` paths). - Regenerate the seam: `npm run gen:api` (commits `backend/swagger.json` + `src/app/shared/infrastructure/api-client.ts`). - Branding: `public/cibg-huisstijl/` + the token bridge in `src/styles.scss` — for a different house style, swap the vendored CSS and re-point the `--rhc-*` bridge (ADR-0003 pattern: bridge, don't rewrite tokens). - `docs/backlog/` WPs, PRDs, and memory-specific docs — new portal, new backlog (keep `docs/backlog/README.md`'s WP process/template if you like the workflow). ## Verify — the GREEN gate must pass at every step ```bash npm run lint && npm run check:tokens && npm test && npm run build npm run build-storybook && npm run test-storybook:ci cd backend && dotnet test && cd .. npm run gen:api && git diff --exit-code backend/swagger.json src/app/shared/infrastructure/api-client.ts ``` Strip incrementally and keep this green — the fences are only worth having if they never go red.