Start here

Quick Start

Get the Sushi SaaS web app, admin console, PostgreSQL, and Redis running locally, then choose the production services your product will use.

Verified against starter commit 7580470.

By the end of this page, you will have the customer app on port 3000, the optional operator console on port 3001, migrated development and test databases, and Redis running locally. You do not need Stripe, Resend, or object-storage credentials to explore the local product.

What Ships and What You Choose

AreaShipped defaultYour decision
Local infrastructureDocker Compose runs PostgreSQL and RedisKeep Docker, or point .env at services you already run
Customer appNext.js app with five localesChoose your brand, URLs, and enabled locales
Admin consoleSeparate app, available with pnpm dev:adminDeploy it only for trusted operators, on its own origin
IntegrationsStripe, Resend, Slack, and S3 adapters are presentSupply providers and credentials before production

Requirements

  • Node.js >=20.19.0 <23
  • pnpm 10.22.0
  • Docker with Compose for the default PostgreSQL and Redis services

Start Locally

git clone https://github.com/PansaLegrand/sushi-saas-template.git
cd sushi-saas-template
pnpm install
pnpm setup
pnpm dev

pnpm setup is idempotent: it creates .env only when absent, starts PostgreSQL and Redis, creates isolated development and test databases, and applies the committed migrations. It never overwrites an existing .env.

Open http://localhost:3000. Start the independently deployed admin app with pnpm dev:admin, then open http://localhost:3001.

Verify the Stack

curl http://localhost:3000/api/health
curl http://localhost:3000/api/ready
pnpm lint
pnpm test:run
pnpm build

/api/health is a cheap liveness check. /api/ready verifies configuration, database connectivity and migrations, Redis, and queue state.

Make It Yours

The generated .env contains safe local defaults. Use Customize Your Product to set the name, URLs, locales, visual preset, legal identity, and the optional systems you intend to keep.

The current production validator expects the complete starter stack: PostgreSQL, Redis and a trusted client-IP source, a strong BETTER_AUTH_SECRET, CRON_SECRET, Stripe keys and all four default recurring Price IDs, a safe Billing Portal configuration, Resend, and S3-compatible storage. Turnstile is enabled by default; set real keys, or deliberately opt out with NEXT_PUBLIC_CAPTCHA_ENABLED=false. Slack remains optional. If your product removes an integration, remove its production validation and dependent UI in the same change rather than leaving an apparently optional blank value.

You are ready to continue when both health endpoints succeed, the customer app can sign up a local account, and pnpm test:run plus pnpm build pass.

Next: finish Customization, read Architecture and Error Contracts, then configure the Database and Customer Authentication.

Quick Start · Sushi SaaS