---
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.
