Decide the build stack for the site from the Angular research and the sign prototype: Angular version, application builder with prerender, zoneless or not, which modern features are used where, Nx or plain CLI, how the neon sign is brought in (copy the component in, or a package), styling approach (plain CSS with the existing custom properties, or something else), testing (Vitest, Playwright), lint and format, and that the repo is public. Also decide what from this .scratch/ map is kept in the public repo as part of the "how this site was built" story. Output: an ADR in docs/adr/ if the choice is hard to reverse; otherwise the decision in the resolution comment.
Stack and repo setup decisions
Question
Answer
Resolved 2026-10-14. ADR: docs/adr/0001-static-prerender-no-server.md.
- Plain Angular CLI, no Nx.
ng new rryter-ch --ssr --zoneless --style=css --test-runner=vitest, thenoutputMode: "static", noserver.ts; all routesRenderMode.Prerender; outputdist/rryter-ch/browser. Angular 22.2.x, TypeScript 6, Node 24. Incremental hydration viaprovideClientHydration(). - Content pipeline:
scripts/build-content.tsruns beforeng build, convertscontent/*.mdand.scratch/rryter-ch-rebuild/**/*.mdto JSON with rendered HTML (marked) intosrc/generated/; components import it; ticket routes come from the same JSON viagetPrerenderParams. - Neon sign: copy
angular/twy-neon-sign/(six files) and both posters in; host it as@defer (hydrate on viewport)with the poster placeholder; settings per ticket 07.[email protected]. - Styling: plain CSS with the sign's custom properties and fonts; global stylesheet plus component styles; print stylesheet. No Tailwind.
- Tests: Vitest units (content build step, reduced-motion branch); Playwright against the prerendered
dist(routes exist, hero text, via/direct on every card, poster without WebGL, print hides the sign). Test-first. - Lint and format: the oxc suite,
oxlintandoxfmt, instead of ESLint and Prettier (Reto's choice). Trade-off accepted: no angular-eslint rules and no template linting; the Angular compiler's strict template checks carry that weight. - CI: GitHub Actions on push: content build,
ng build, unit and e2e tests. Deploy step empty until hosting is decided. - Repo:
rryter/rryter.ch, public from the first push..scratch/ships (rendered at/built). Research files merged intodocs/research/andcontent/source/; prototype stays on its branch.content/source/linkedin.pdfis gitignored (phone and street); the transcription carries no phone.