Create new

Installation

Create a new Launch.now project with the CLI and get it running locally in minutes.

Prerequisites

  • Node.js 20+node -v to check
  • pnpmpnpm i -g pnpm
  • Git

1. Create your project

pnpm dlx create-saas-app

The CLI walks you through a short setup:

┌  Launch.now◇  Project name│  my-app◇  SaaS model│  ● B2B — multi-tenant (organisations & workspaces)  [default]│  ○ B2C — single-tenant (user-owned resources)◇  Advanced auth features (multi-select)│  ◼ Two-factor authentication (TOTP + OTP)│  ◼ Passkeys (WebAuthn)│  ◻ Magic link◇  Initialize a git repository?│  Yes◇  Install dependencies?│  Yes└  Done! cd my-app && pnpm dev

The SaaS model you choose here shapes the database schema, auth flows, middleware, and Stripe integration. It cannot be changed after init.


2. Configure environment variables

cp .env.example .env.local
cp .env.example .env.local

Open .env.local. The variables are grouped by service — you do not need all of them to start. Here is the minimum to get the app running locally:

# AppNEXT_PUBLIC_APP_URL=http://localhost:3000# Auth — generate with: openssl rand -base64 32BETTER_AUTH_SECRET=# Database — local Postgres or a free cloud instance (Neon / Supabase)DATABASE_URL=postgresql://postgres:password@localhost:5432/myapp

For the full list of variables with instructions for each service, see Environment Variables.


3. Set up the database

pnpm db:migrate

This runs the consolidated migration and creates all tables — including Better Auth session tables.

No local Postgres? Use Neon or Supabase — both have a free tier. Paste the connection string they give you into DATABASE_URL. Use the pooled connection string for DATABASE_URL and the direct string for DIRECT_URL (required for migrations).


4. Start the development server

pnpm dev

The app is running at http://localhost:3000.


What works out of the box

Once the server is up, the following work with only the minimum env vars above:

  • Email/password authentication
  • Session management
  • Two-factor authentication (if selected at init)
  • Passkeys (if selected at init)
  • Organisation creation and member management (B2B mode)

The following require additional service configuration:

FeatureWhat to configure
Social loginGitHub OAuth · Vercel OAuth
Transactional emailResend API key
PaymentsStripe keys + webhook
File uploadsSupabase Storage keys
Background jobsInngest event key
CachingUpstash Redis keys
Error trackingSentry DSN

Start with what you need — every section is independent.