CLI

Commands

Complete reference for all CLI commands

Overview

The Better-T-Stack CLI provides several commands to manage your TypeScript projects.

init (Default Command)

Creates a new Better-T-Stack project.

create-better-t-stack [project-directory] [options]

Parameters

  • project-directory (optional): Name or path for your project directory

Key Options

  • --yes, -y: Use default configuration (skips prompts)
  • --verbose: Show detailed result information as JSON
  • --yolo: Bypass validations and compatibility checks
  • --package-manager <pm>: npm, pnpm, bun
  • --install / --no-install: Install dependencies after creation
  • --git / --no-git: Initialize Git repository
  • --frontend <types...>: Web and/or native frameworks (see Options)
  • --backend <framework>: hono, express, fastify, elysia, next, convex, none
  • --runtime <runtime>: bun, node, workers (none only with --backend convex or --backend none)
  • --database <type>: none, sqlite, postgres, mysql, mongodb
  • --orm <type>: none, drizzle, prisma, mongoose
  • --api <type>: none, trpc, orpc
  • --auth <provider>: better-auth, clerk, none (see Options)
  • --db-setup <setup>: none, turso, d1, neon, supabase, prisma-postgres, mongodb-atlas, docker
  • --examples <types...>: none, todo, ai
  • --web-deploy <setup>: none, wrangler, alchemy
  • --server-deploy <setup>: none, wrangler, alchemy
  • --directory-conflict <strategy>: merge, overwrite, increment, error
  • --render-title / --no-render-title: Show/hide ASCII art title
  • --disable-analytics / --no-disable-analytics: Control analytics collection

See the full reference in Options.

Examples

# Default setup with prompts
create-better-t-stack

# Quick setup with defaults
create-better-t-stack --yes

# Specific configuration
create-better-t-stack --database postgres --backend hono --frontend tanstack-router

add

Adds addons or deployment configurations to an existing Better-T-Stack project.

create-better-t-stack add [options]

Options

  • --addons <types...>: Addons to add (see Addons)
  • --web-deploy <setup>: Web deployment setup (none, wrangler, alchemy)
  • --server-deploy <setup>: Server deployment setup (none, wrangler, alchemy)
  • --project-dir <path>: Project directory (defaults to current directory)
  • --install: Install dependencies after adding
  • --package-manager <pm>: Package manager to use

Examples

# Add addons interactively
create-better-t-stack add

# Add specific addons
create-better-t-stack add --addons pwa tauri --install

# Add deployment setup
create-better-t-stack add --web-deploy wrangler

sponsors

Displays Better-T-Stack sponsors.

create-better-t-stack sponsors

Shows a list of project sponsors and supporters.

docs

Opens the Better-T-Stack documentation in your default browser.

create-better-t-stack docs

Opens https://better-t-stack.dev/docs in your browser.

builder

Opens the web-based stack builder in your default browser.

create-better-t-stack builder

Opens https://better-t-stack.dev/new where you can configure your stack visually.

Global Options

These options work with any command:

  • --help, -h: Display help information
  • --version, -V: Display CLI version

Command Examples

Create a Full-Stack App

create-better-t-stack \
  --database postgres \
  --orm drizzle \
  --backend hono \
  --frontend tanstack-router \
  --auth \
  --addons pwa biome

Create a Backend-Only Project

create-better-t-stack api-server \
  --frontend none \
  --backend hono \
  --database postgres \
  --orm drizzle \
  --api trpc

Add Features to Existing Project

cd my-existing-project
create-better-t-stack add --addons tauri starlight --install

Programmatic Usage

For advanced use cases, automation, or integration with other tools, you can use the Programmatic API to create projects from Node.js code:

import { init } from "create-better-t-stack";

// Create multiple projects programmatically
const projects = [
  { name: "api", config: { frontend: ["none"], backend: "hono" } },
  { name: "web", config: { frontend: ["next"], backend: "none" } }
];

for (const { name, config } of projects) {
  const result = await init(name, {
    yes: true,
    ...config,
    directoryConflict: "increment"
  });
  
  console.log(result.success ? `✅ ${name}` : `❌ ${name}: ${result.error}`);
}

This is useful for:

  • Build tools and generators - Create projects from templates
  • CI/CD pipelines - Generate test projects automatically
  • Development workflows - Batch create related projects
  • Custom tooling - Integrate with your existing development setup

See the Programmatic API documentation for complete examples and API reference.