Deployment
Build and start commands, required services, secrets and the Stripe webhook.
The Railway template deploys the app from GitHub with PostgreSQL and a private bucket named Storage. It generates SESSION_SECRET and points the app URLs at the service's public domain. Stripe and SMTP variables are left blank.
Processes
| Process | Command | Purpose |
|---|---|---|
| Build | keystone build --no-ui && next build | Generates the schema and builds Next.js |
| Web | npm run migrate && next start | Applies migrations, then serves the storefront, dashboard and GraphQL |
railway.toml sets these commands. Migrations run at start because the database is usually reachable only from the running service.
Checklist
- Provision PostgreSQL. Set
DATABASE_URLand aSESSION_SECRETof 48 or more characters. - Set
NODE_ENV=productionandPUBLIC_SIGNUPS_ALLOWED=false. - Add Stripe keys. Create a Stripe webhook endpoint at
https://your-host/api/integrations/payment/pp_stripe_stripe/webhookforpayment_intent.succeeded,payment_intent.payment_failed,payment_intent.canceled,charge.refundedandrefund.updated, and put its signing secret inSTRIPE_WEBHOOK_SECRET. - Deploy, open
/dashboard/init, create the first admin, and run setup. - Buy a ticket with a test card and refund it before switching to live keys.