About CrabStack
CrabStack is built by Carl-W., who has been writing code for a decade. He has a master's in Electrical Engineering, specializing in processor and integrated-circuit design, and has built web and mobile products since 2018.
A chip that has shipped can't be patched, so verification comes first. CrabStack works the same way: ./verify.sh runs lint, unused-code checks, both builds, the unit and integration tests and the API contract drift check, and CI runs those checks and more on every pull request to main.
What it took to build
- First commit March 30, 2026. 638 commits on main and 1,000+ tests by November 2026.
- Built with Claude Code and Codex. From October 1 to November 5, 2026 alone, Claude Code sessions in the template's folders wrote over 4 million output tokens and read about 680 million input tokens, most of it cached context. Earlier months were not recorded, so the real total is higher.
Why REST instead of GraphQL
In May 2026 the API moved from GraphQL to REST with an OpenAPI contract. A template exists to get you running fast, and GraphQL slows that down: an Apollo server and an Apollo client, each complex on its own, plus decorated model classes and resolvers on the backend and hand-written query files on the frontend to keep in step. Most screens asked for every field anyway, so per-field queries went unused.
REST still gives end-to-end types. The OpenAPI spec is generated from the backend's zod schemas and the frontend types from the spec, and CI fails when the two drift apart.
Why Postgres instead of MongoDB
The MongoDB version of the template was dropped at the same time. Documents can't grow forever, so a SaaS ends up using MongoDB as a relational database anyway, with aggregation pipelines where SQL would be one join. Postgres does that job directly, with joins and foreign keys.
A relational workload on MongoDB also needs an index for each way the data is read. In Remoet, Carl-W.'s production app on MongoDB, the 215 indexes take 70.5 MB of disk against 92.4 MB for the data itself.
Get CrabStack, or read the docs first.