# create-better-t-stack: a pick-your-own-parts scaffolder for type-safe TypeScript monorepos

> The CLI generates a monorepo from a menu of frontends, backends, ORMs and auth providers, then leaves the code in your repository. It is a good fit when you already know which pieces you want and a poor fit when you want a framework to make those decisions for you.

**AmanVarshney01/create-better-t-stack** — A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations

- Repository: https://github.com/AmanVarshney01/create-better-t-stack
- Website: https://better-t-stack.dev
- Stars: 5,804 · Forks: 333
- Language: TypeScript
- License: MIT
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/amanvarshney01-create-better-t-stack

## The problem create-better-t-stack solves, and for whom

Starting a TypeScript monorepo by hand is mostly plumbing. You create a workspace root, decide where the web app lives, wire a shared package for types, configure a database client, add an auth provider, and then spend the rest of the day fixing import paths. None of that work is specific to your product, and all of it is easy to get subtly wrong, especially the type boundary between the server and the client.

create-better-t-stack targets that setup phase. The README describes it as a CLI for scaffolding end-to-end type-safe TypeScript projects, and its philosophy section is explicit about the intent: roll your own stack, pick only the parts you need, and keep templates minimal. The menu is wide. Frontends include React with TanStack Router, React Router or TanStack Start, plus Next.js, Nuxt, Svelte, Solid, Astro, React Native in Bare, NativeWind or Unistyles variants, or none at all. Backends include Hono, Express, Fastify, Elysia, Convex, a fullstack self option, or none. You also choose an API layer (tRPC or oRPC), a runtime (Bun, Node.js or Cloudflare Workers), a database (SQLite, PostgreSQL, MySQL or MongoDB), an ORM (Drizzle, Prisma or Mongoose), and optionally Better Auth or Clerk.

The audience is therefore narrow and specific: developers who already have opinions about their stack and want the glue generated rather than hand-written. If you do not yet have those opinions, the number of prompts is a liability rather than a feature.

## How the CLI is structured and what it actually generates

The repository is a Turborepo monorepo with three visible parts. apps/cli holds the scaffolding CLI, apps/web holds the documentation site, and plugin/ holds a Claude Code plugin that bundles an MCP server, skills, commands and an agent. The root package.json defines the workspace globs as apps/* and packages/*, so the CLI itself is one workspace inside the same repository it scaffolds from.

Generation is a template-and-edit pipeline rather than a runtime framework. The dependency catalog in the root package.json includes handlebars, ts-morph and yaml, which points at the mechanism: templates are rendered, and TypeScript source is then rewritten programmatically. That is how a scaffolder can offer a matrix of frontends and backends without maintaining a full copy of every combination. The CLI prompts come from @clack/prompts, which is listed as a dependency.

This design has a direct consequence for you as a user. Once generation finishes, there is no create-better-t-stack runtime in your project. Nothing phones home, nothing needs to be kept in sync with a CLI version, and there is no upgrade path that rewrites your code. The output is ordinary source files you now own. The trade-off is that the tool cannot help you later: if you want to swap Drizzle for Prisma six months in, that is a manual migration, not a CLI flag.

## Installing create-better-t-stack and generating a first project

The README gives three equivalent entry points and recommends Bun. Each one downloads the create-better-t-stack package and starts the interactive prompt sequence.

```bash
bun create better-t-stack@latest
```

The pnpm and npm equivalents are listed as well, and they behave the same way once the prompts start.

```bash
pnpm create better-t-stack@latest
```

```bash
npx create-better-t-stack@latest
```

After the command runs you answer the prompts for frontend, backend, API layer, runtime, database, ORM, auth and addons. Expect to be asked about addons such as Turborepo, Nx, Biome, Lefthook, Husky, PWA, Tauri and others, and about examples, where the README lists Todo and AI. Database setup options include Turso, Neon, Supabase, Prisma PostgreSQL, MongoDB Atlas, Cloudflare D1 and Docker.

If you would rather not answer prompts blind, the README points to a visual Stack Builder at https://better-t-stack.dev/new that emits a command for the stack you select. For a non-interactive starting point, the repository's own development scripts show the shape of the monorepo you will get: a workspace root with apps/* and packages/*, driven by turbo.json. The root scripts are worth reading before you commit to a layout.

```bash
git clone https://github.com/AmanVarshney01/create-better-t-stack.git
bun install
bun dev:cli
```

Those three commands are the maintainers' own development flow for the CLI, not a step you need in a generated project. They are useful if you want to read the prompt definitions before running the scaffolder on a real repository.

## The Claude Code plugin path and what it changes

The README documents a second way to drive the generator, through a Claude Code plugin. The plugin ships an MCP server plus skills and commands, and the stated purpose is that the assistant plans a valid stack and generates it through the MCP server instead of hand-rolling boilerplate.

```bash
/plugin marketplace add AmanVarshney01/create-better-t-stack
/plugin install better-t-stack@better-t-stack
```

Once installed, the README suggests asking for something like a fullstack app with Next, Hono, Postgres and Better Auth, or invoking the /better-t-stack:new command with a description. The plugin directory and the Agent Workflows documentation page are cited as the reference.

This is the most opinionated part of the project and also the least verifiable from the repository alone. The README does not describe how the plugin validates a requested stack against the supported matrix, nor what it does when you ask for a combination the CLI cannot generate. Treat the plugin as a convenience wrapper over the same generator, not as a separate product with its own guarantees.

## Where create-better-t-stack is the wrong choice

The clearest limitation is the one the project states as a feature. The templates are minimal and the scaffolds are bare-bones, so a generated project will not contain the conventions a full framework gives you. If you expect file-based routing, server actions, image optimisation and a deployment story to arrive pre-configured, you will be adding them yourself. The README's feature list is a list of choices, not a list of behaviours.

A second constraint is the runtime menu. Bun, Node.js and Cloudflare Workers are offered, and the README recommends Bun for the create command. If your deployment target is a runtime outside that list, or your team has standardised on a Node version the generated dependencies do not support, the scaffold is a starting point you will have to modify before it runs. The root catalog pins typescript at ^6.0.3 and @types/node at ^26.5.0, which are current-generation pins; the README does not state a minimum Node version for generated projects, so check the generated package.json rather than assuming.

Finally, the tool has no opinion about what happens after generation. There is no documented rollback, no migration command for changing an ORM or auth provider later, and no upgrade path that keeps a generated project in step with new CLI releases. Version numbers move quickly, with v3.44.1 released on 2026-09-18, but a new CLI release does not touch code you already generated.

## How it compares with create-t3-app and create-next-app

The nearest comparison is create-t3-app. That project also scaffolds a type-safe TypeScript application with tRPC and an ORM, but it makes more decisions for you: the frontend is Next.js and the shape of the app is fixed by the template. create-better-t-stack inverts that. You select the frontend from a list that includes Next.js, Nuxt, Svelte, Solid, Astro and several React variants, and you can select no frontend at all. The difference is not quality but where the decision happens: create-t3-app narrows your options to keep the template coherent, while create-better-t-stack widens them and pushes coherence onto you.

create-next-app sits at the opposite end. It generates a single Next.js application with no monorepo layout and no backend, ORM or auth choices. If your project is one Next.js app, create-next-app is less to configure. create-better-t-stack only earns its prompt sequence when you actually want the workspace split, a separate API layer and a database client in a shared package.

A third reference point is the visual Stack Builder on the project's own site. It is not a competing tool, but it competes with the interactive CLI for the same job: choosing a stack. The README presents it as a way to generate a command, which means the site is a front end for the same generator rather than a separate scaffolder.

## Licence, maintenance and upgrade cost

The repository is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and licence text are retained. The README states the project is free and open source forever. That is the project's own claim about intent, not a legal term; if you redistribute the generated templates, read the LICENSE file in the repository rather than relying on the README sentence.

Maintenance signals are strong on paper. The last push to main was on 2026-09-19, and the most recent release listed is v3.44.1 on 2026-09-18, with v3.44.0 and v3.43.4 in the days before. The repository is not archived. The release cadence suggests frequent small releases, which matters for the CLI itself but not for projects you have already generated.

The upgrade cost is asymmetric, and this is the part worth understanding before adopting. Keeping the CLI current is cheap: rerun the create command with @latest. Keeping a generated project current is manual, because the CLI has no documented mechanism for applying later template changes to existing code. Your real upgrade burden is the dependency set the scaffold pinned at generation time, which will drift from the project's current catalog. Budget for that drift, not for CLI upgrades.

## Conclusion

Adopt create-better-t-stack if you have already chosen your frontend, backend and ORM and want the wiring between them generated once instead of assembled by hand. Skip it if you need a framework that owns routing, data loading and deployment, or if your team is not on Bun or a recent Node release. Before committing, run the generated project's own test command and open the generated files that the CLI does not template, since the README documents the menu but not the full output of every combination.

## FAQ

### Can you give me an example of a tech stack?

The README lists one directly: a fullstack app with Next, Hono, Postgres and Better Auth, which is the example it suggests asking the Claude Code plugin to build. The CLI reaches the same result through its prompts for frontend, backend, database and auth.

### What does it mean to create a stack?

In this project it means choosing one option from each of several menus (frontend, backend, API layer, runtime, database, ORM and auth) and letting the CLI generate a monorepo that wires them together. The README calls this rolling your own stack and keeping templates minimal.

### What is the best tech stack for web development in 2026?

The project does not rank stacks, and the README makes no claim about which combination is best. It offers React with TanStack Router, React Router or TanStack Start, Next.js, Nuxt, Svelte, Solid, Astro and React Native on the frontend side, and leaves the choice to you.

### What is a good tech stack for beginners?

The README does not give beginner guidance or recommend a default combination. It does point to a visual Stack Builder at https://better-t-stack.dev/new that generates a command for a stack you select, which is a way to see the options before answering the CLI prompts.

## Sources

- [AmanVarshney01/create-better-t-stack on GitHub](https://github.com/AmanVarshney01/create-better-t-stack)
- [License: MIT](https://github.com/AmanVarshney01/create-better-t-stack/blob/main/LICENSE)
- [Project website](https://better-t-stack.dev)
- [README](https://github.com/AmanVarshney01/create-better-t-stack/blob/main/README.md)
- [Releases](https://github.com/AmanVarshney01/create-better-t-stack/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/amanvarshney01-create-better-t-stack
