Blog
Guides, deep dives, and updates from the LaunchApp team.
Billing with Stripe and Polar.sh
LaunchApp ships with two billing providers out of the box: Stripe and Polar.sh. Both are wrapped behind the @repo/billing package, which exposes the same interface regardless of which provider is active. You pick one at deploy time by setting the BILLING_PROVIDER env var — the rest of the codebase never cares which is running.
Extending the database schema
Every LaunchApp template shares the same @repo/database package. Tables are defined in packages/database/src/schema/, one file per domain (auth.ts, billing.ts, organization.ts, and so on). This layout keeps the schema browsable and makes it obvious where new fields belong.
Deploying to production
LaunchApp is designed to deploy as two separate services: the React Router 7 web app and the Hono API server. Both are standard Node.js processes that you can run on any platform that supports a Dockerfile or a Node runtime — Railway, Fly.io, Render, AWS ECS, or your own Kubernetes cluster.
Authentication deep dive
Authentication in LaunchApp is handled by Better Auth, a framework-agnostic auth library that supports email/password, OAuth providers, magic links, and more. The server instance lives in @repo/auth and is shared across both the Hono API and the React Router frontend — one config, one source of truth.
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.
Want to stay updated?
Join our newsletter →