---
title: Create Command
description: Scaffold a new Better Fullstack project with prompts, defaults, templates, shapes, or explicit flags.
translationStatus: pending
updated: 2026-09-14
---

`create` writes a new project from a typed stack configuration. Use it interactively to explore, or pass flags when you need the same project shape every time.

<PMTabs
  npm="npm create better-fullstack@latest [project-name] -- [flags]"
  pnpm="pnpm create better-fullstack@latest [project-name] [flags]"
  bun="bun create better-fullstack@latest [project-name] [flags]"
  yarn="yarn create better-fullstack@latest [project-name] [flags]"
/>

For npm, Better Fullstack flags go after `--`.

## Design-system lint

Select `shadcn-lint` together with `oxlint`, or with both `eslint` and `prettier`, through `--addons`. For graph input, use `--part codeQuality:universal:oxlint --part codeQuality:universal:shadcn-lint`, or replace the Oxlint part with both `codeQuality:universal:eslint` and `codeQuality:universal:prettier`. The interactive Code Quality prompt accepts one base profile and this optional second check.

This requires Tailwind CSS v4 and one of `next`, `vinext`, `tanstack-router`, `tanstack-start`, `react-router`, or `react-vite`. Generated `DESIGN.md` explains the initial Button contract and `lint:design` command. The configuration and dependencies are also present with `--no-install` and in builder downloads.

## Operational contract

| Concern         | Contract                                                                                                                                     |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Preview         | Add `--dry-run` to render and list files without writing them.                                                                               |
| Writes          | Creates a project directory; dependency installation and Git initialization follow `--install` and `--git`.                                  |
| Safe inspection | Combine `--dry-run`, `--no-install`, and `--no-git`.                                                                                         |
| Recovery        | Generate into a new directory and remove it if you reject the scaffold. Existing-directory behavior is controlled by `--directory-conflict`. |
| Source of truth | The live CLI schema and the generated flag tables below, shared with the Stack Builder and MCP server.                                       |

## Command modes

| Mode     | Shape                                 | Use it when                                 |
| -------- | ------------------------------------- | ------------------------------------------- |
| Wizard   | `[launcher] my-app`                   | You want prompts and defaults.              |
| Defaults | `[launcher] my-app [flags] --yes`     | You want the default stack without prompts. |
| Scripted | `[launcher] my-app [flags]`           | You want repeatable output.                 |
| Dry run  | `[launcher] my-app [flags] --dry-run` | You want to inspect files before writing.   |

## Project shapes

`--shape` names what you are building, and the CLI then runs only the prompts that shape needs:

| Shape               | Asks                                                        | Result                                          |
| ------------------- | ----------------------------------------------------------- | ----------------------------------------------- |
| `--shape fullstack` | Nothing extra; the standard composition prompt runs.        | The full guided flow.                           |
| `--shape frontend`  | TypeScript, Rust, or .NET.                                  | A client app with the server half switched off. |
| `--shape backend`   | TypeScript, Go, Rust, Python, Java/Kotlin, .NET, or Elixir. | An API with no web frontend.                    |
| `--shape mobile`    | React Native, Kotlin, Swift, or Flutter.                    | A mobile app on the platform you pick.          |

```bash
# Prompts for the mobile platform
bun create better-fullstack@latest my-app --shape mobile

# Platform answered up front; Kotlin libraries and Git are still asked
bun create better-fullstack@latest my-app --shape mobile --kotlin-mobile compose-multiplatform

# Fully prompt-free
bun create better-fullstack@latest my-app --shape backend --ecosystem go --yes
```

With `--yes`, nothing is left to prompt, so a shape falls back to its default ecosystem: TypeScript for frontend and backend, React Native for mobile.

A shape decides the stack, so the CLI rejects rather than silently overrules a command that already decides it too: `--config`, `--from-history`, `--part`, and `--template` each carry a complete stack; a flag the shape switches off contradicts it; and `--shape mobile` accepts selectors for exactly one platform. Kotlin, Swift, and Flutter apps build through Gradle, XcodeGen, and Flutter, which the CLI does not run, so `--install` is skipped with a notice on those platforms instead of reporting an install that never happened.

## Templates

`--template` starts from a filled-in stack. Flags you pass alongside override individual fields, and `--yes` accepts the rest as-is:

| Template  | Stack                                                                        |
| --------- | ---------------------------------------------------------------------------- |
| `t3`      | Next.js, tRPC, Prisma, PostgreSQL, Better Auth, Biome, Turborepo             |
| `saas`    | Next.js, tRPC, Drizzle, PostgreSQL, Better Auth organizations, Creem billing |
| `mern`    | React Router, Express, Mongoose, MongoDB Atlas, oRPC, Better Auth            |
| `pern`    | TanStack Router, Express, Drizzle, PostgreSQL, tRPC, Better Auth             |
| `uniwind` | Expo with Uniwind, mobile only, no backend                                   |

```npm
npm create better-fullstack@latest my-app -- --template t3
```

## Prompt behavior

- Explicit flags skip only the categories they cover.
- `--yes` accepts defaults and conflicts with core stack flags such as `--frontend`, `--backend`, `--database`, `--orm`, `--auth`, and `--api`.
- Use `none` to disable optional categories, including `--ai-docs none`.
- `--verify` runs every generated target check after scaffolding without starting dev servers. Those toolchains may fetch dependencies and write normal lockfiles, caches, or build artifacts.
- `--version-channel latest` follows npm `latest` tags except for temporary compatibility holds that keep generated projects installable.

## Flag tables

The tables below are generated from the same shared schemas the CLI, Stack Builder, and MCP server use.

### Common

<CliFlagTable group="common" />

### TypeScript stack

Use these with `--ecosystem typescript`.

<CliFlagTable group="typescript-stack" />

### Services

<CliFlagTable group="typescript-services" />

### UI and app behavior

<CliFlagTable group="typescript-ui" />

### shadcn/ui

<CliFlagTable group="shadcn" />

### React Native

Use these with `--ecosystem react-native`.

<CliFlagTable group="react-native" />

### Language ecosystems

<CliFlagTable group="rust" />

<CliFlagTable group="python" />

Go auth splits in two: GoBetterAuth uses the global `--auth go-better-auth` value, while Go-native helpers use `--go-auth`.

<CliFlagTable group="go" />

<CliFlagTable group="java" />

<CliFlagTable group="dotnet" />

<CliFlagTable group="elixir" />

## Examples

### Flat single-app output

`--workspace-shape single-app` flattens a thin Next.js or TanStack Start self-backend scaffold into the project root. It is a create-time layout choice. If the stack needs separate database, ORM, auth, API, service, native, container, or deployment packages, compatibility safely restores the default `monorepo` layout.

```npm
npm create better-fullstack@latest thin-next-app -- \
  --frontend next \
  --backend self \
  --runtime none \
  --workspace-shape single-app \
  --database none \
  --orm none \
  --api none \
  --auth none \
  --payments none \
  --email none \
  --observability none \
  --logging none \
  --web-deploy none \
  --server-deploy none \
  --examples none \
  --ai-docs none \
  --no-install \
  --no-git
```

### Multi-ecosystem project

```npm
npm create better-fullstack@latest my-mixed-app -- \
  --part frontend:typescript:next \
  --part backend:go:gin \
  --part backend.orm:go:gorm \
  --part database:universal:postgres \
  --part mobile:react-native:native-bare
```

See [Multi-Ecosystem](/docs/ecosystems/multi-ecosystem/) for the full part model.

## Scaffold history

`history` lists recent scaffolds with the reproducible command that created each one:

```bash
npx create-better-fullstack@latest history
```

Flags: `--limit <n>` (default 10), `--clear`, and `--json`. To reuse a stack, copy its reproducible command and re-run it with a new name or adjusted flags. History stays local under your user directory.
