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.
Before deploying, build the entire monorepo with pnpm build. Turborepo caches build artefacts and only rebuilds packages that have changed, so incremental builds are fast. The web app output lands in apps/web/build and the API in packages/api/dist.
Set all required environment variables on your hosting platform: DATABASE_URL pointing at your production PostgreSQL instance, BETTER_AUTH_SECRET (a long random string), BETTER_AUTH_URL (the public URL of your API), and any optional integrations like STRIPE_SECRET_KEY or SENTRY_DSN.
Run database migrations against the production database with pnpm db:migrate before starting the new release. The migration command reads DATABASE_URL from the environment, so no code changes are needed between environments.
For zero-downtime deployments, consider running migrations in a pre-deploy step and keeping the old and new schema compatible until the old release is drained. The Pulumi program in infrastructure/pulumi can provision the cloud resources if you prefer infrastructure-as-code.