+−What exactly is tested?
The preset matrix, in full: CI generates a project from each preset, demands zero occurrences of the old name, and runs install, typecheck, unit and e2e. Plus all-on, all-off, and each feature turned off individually on top of the SaaS preset. Fourteen boolean features are 16,384 combinations, and CI does not test 16,384 projects: combinations outside that matrix are allowed and untested — and the CLI says so, in one line, without drama. A boilerplate that promises guarantees it does not verify is worse than one that states the limit.
+−What if I do not want multi-tenancy?
--no-multi-tenant hides it, it does not tear it out. The project starts with one fixed tenant created in the seed, the scope always open on it, and the company switcher, the /platform panel and SUPERADMIN out of the UI. Row Level Security stays, and stays proven by tenant-isolation.e2e-spec.ts; the cost is one indexed column and a predicate Postgres resolves to a constant. Tearing it out would mean maintaining two versions of all data access — and the version without RLS is precisely the one we cannot prove safe.
+−Can I update later?
The generated project is yours, not a dependency: there is no pnpm update that pulls DontPanic changes into it, and that is deliberate — you will be editing this code on day one. What you do get is reproducibility: the same recipe on the same template version generates the same project today and in two years, so you can generate again and compare diffs when you want to adopt something from upstream.
+−What about the licence?
MIT, on the generator and on the template. What comes out of the npx is yours: no required attribution, no royalty, no clause that changes value if your product grows. You can close the source of what you generate.
+−Do I need Docker?
To run the test suite, no: the memory, console and local adapters exist exactly so it runs with nothing else up. To develop properly you need a Postgres — and the project’s docker compose brings up Postgres, Redis, MinIO and Mailpit on ports that will not collide with yours. If you already have those services, point the .env at them and generate with --no-docker.
+−Does it work with Claude Code, Cursor and friends?
The generated project ships a CLAUDE.md pruned to the features you chose — only the sections that exist in your code. That is where the security decisions live, each with its reasoning, in the form an agent reads before writing. The side effect is probably what brought you here: context goes into your product instead of rediscovering how refresh token rotation works.