Create FasterCreate Faster

Interactive CLI

Step-by-step guide to the interactive workflow

The interactive CLI provides a guided experience for creating projects. Run the command without any flags to start:

# Using your favorite package manager
bun create faster
npm create faster
pnpm create faster

Workflow Overview

The CLI walks through configuration in a logical sequence, starting with naming decisions, then application setup, followed by infrastructure choices, and finally installation preferences.

Step-by-Step Process

Project Name

First, you'll name your project:

  Name of your project?
  my-saas

The CLI validates that no file or directory with this name exists in the current directory. For single-app projects, this name becomes the application directory. For multi-app projects, it becomes the monorepo root.

Application Count

Next, specify how many applications to create:

  How many apps do you want to create?
  Eg: a backend + a frontend = enter 2
  Only a Next.js app = enter 1
  Turborepo will be used if more than one
  3

Single app (1): Generates a standard framework project structure.

Multiple apps (2+): Automatically configures Turborepo with apps in apps/ directory and shared packages in packages/.

App Configuration

For each application, you'll configure its name, stack, and modules.

App Name

For single-app projects, the app name matches the project name automatically. For multi-app projects, you'll name each application:

  Name of the app #1?
  web

  Name of the app #2?
  mobile

  Name of the app #3?
  api

Stack Selection

Choose the framework for each app. Stacks are organized by type:

  Select the stack for web

 Web / Mobile App
 Next.js (React framework with SSR)
 Expo (React Native framework)

 Server / API
 Hono (Fast web framework)

The stack determines the base template and available modules.

Module Selection

After selecting a stack, choose optional modules to include. Available modules depend on the selected framework and are grouped by category:

  Do you want to add any Next.js modules to web?

  UI & Styling
 shadcn/ui
 Next Themes

  Features
 MDX
 PWA

  Authentication
 Better Auth

  Data Fetching
 TanStack Query
 TanStack Devtools

  Forms
 React Hook Form
 TanStack Form

Use arrow keys to navigate and space to toggle selections.

Database Selection

Choose a database provider or skip:

  Include a database?
 PostgreSQL
 MySQL
 None

Selecting a database enables ORM selection in the next step. Database configuration is shared across all applications in a monorepo via the packages/db package.

ORM Selection

If you selected a database, choose an ORM:

  Configure an ORM?
 Drizzle
 Prisma
 None

The ORM package includes:

  • Type-safe database client
  • Schema definitions
  • Authentication integration (if auth module selected)
  • Database connection configuration

Git Initialization

Choose whether to initialize a Git repository:

  Initialize Git?
  Yes / No (default: Yes)

If enabled, the CLI runs git init after file generation. This is required if you plan to use Husky for git hooks.

Extras

Select additional development tools:

  Add any extras?
 Biome
 Husky

Biome: Adds unified linting and formatting configuration across all apps.

Husky: Configures pre-commit hooks (requires Git to be initialized).

Dependency Installation

Finally, choose whether to install dependencies immediately and which package manager to use:

  Install dependencies now?
 Install with bun
 Install with pnpm
 Install with npm
 Skip installation

If you select a package manager, the CLI runs the installation process:

  Installing dependencies with bun...

  Dependencies installed successfully!

If you skip, you can manually run the installation later:

cd my-saas
bun install

Validation Rules

The CLI enforces compatibility requirements during configuration:

ORM requires Database: You cannot select an ORM without first selecting a database provider.

Husky requires Git: The Husky extra is only available if Git initialization is enabled.

Unique app names: In multi-app projects, each application must have a unique name.

If you make incompatible selections, the CLI displays an error message explaining the requirement.

After Generation

Once file generation completes, the CLI runs post-generation tasks if configured:

  Initializing git repository...

  Git repository initialized successfully!

Then displays a comprehensive summary with an auto-generated command to recreate the project:

  📂 Summary ────────────────────────────────────╮

  #🏠 Structure:                                 │

  📦 my-app/
  ├─ 🚀 apps/
  ├─ web/ (Next.js +4 modules)                │
  ├─ mobile/ (Expo +1 modules)                │
  ├─ api/ (Hono +1 modules)                   │
  ├─ 📦 packages/
  └─ db/ (Drizzle + PostgreSQL)               │
  └─ ⚙️  Turborepo, Git, Biome

  #💡 Next steps:                                │

  cd my-app

  # Development:                                 │
  bun run dev        # Start development server  │

  # Build:                                       │
  bun run build      # Build for production      │

  # Git:                                         │
  git remote add origin <your-repo-url>
  git push -u origin main

├─────────────────────────────────────────────────╯

  🚀 Project created successfully at /home/bob/my-app!
🔥 You can recreate this project with the following command:

bunx create-faster my-app \
  --app web:nextjs:shadcn,next-themes,mdx,pwa \
  --app mobile:expo:nativewind \
  --app api:hono:aws-lambda \
  --database postgres \
  --orm drizzle \
  --git \
  --pm bun \
  --extras biome

The auto-generated command allows you to share your exact configuration with team members or reproduce the project setup for testing.