← Back to blog
·5 min read

Getting started with LaunchApp

LaunchApp is a production-ready SaaS starter monorepo. It bundles everything you need to go from idea to launch: authentication, a PostgreSQL database with Drizzle ORM, a Hono API server, and a React Router 7 frontend — all wired together and ready to deploy.

The monorepo layout

The monorepo is managed with pnpm and Turborepo. Internal packages live under the @repo/* namespace and each one has a single, well-defined responsibility:

  • @repo/auth — Better Auth server + client
  • @repo/database — Drizzle ORM schema and migrations
  • @repo/billing — Stripe and Polar.sh integrations
  • @repo/email — Resend + React Email templates
  • @repo/ui-kit — shared Radix + Tailwind components

This structure keeps the graph shallow and lets each template variant (Next.js, Nuxt, SvelteKit) share the same backend packages while swapping the frontend framework.

First-run checklist

Clone the repository, copy .env.example to .env, and fill in your DATABASE_URL and BETTER_AUTH_SECRET. Then run docker compose up -d to start the local PostgreSQL instance.

Once the database is running, execute pnpm db:migrate to apply the initial schema, then pnpm dev to start all apps in watch mode. The web app is available on port 5173 and the API on port 3000 by default.

Where to go next

From here you can register a new account, explore the dashboard, and start customising the template for your own product. The package dependency graph in CLAUDE.md is a useful map of how everything connects, and the rest of this blog covers deeper topics like auth, deploys, and extending the schema.