Skip to content

Deployment Environment

Deployment Environment

Railway Config

Railway build and deploy settings are mirrored in apps/*/railway.json. Keep each service root directory and custom config path aligned with the checked-in app directory.

App Stages

Service-level app stage values must use the normalized lowercase vocabulary: production, staging, sandbox, or development.

ServiceStage variable
sirloinSIRLOIN_STAGE
stripSTRIP_STAGE
brainBRAIN_STAGE
brisketBRISKET_STAGE
flankFLANK_STAGE

NODE_ENV is still reserved for framework/runtime mode in Node services and should not be used as the service app stage.

Preview Databases

Preview environments are named beef-pr-<PR_NUMBER>. The Neon branching workflow creates the PR branch and updates Railway preview variables.

Brain preview wiring needs both DATABASE_URL and DIRECT_DATABASE_URL. Setting only DATABASE_URL is insufficient because Prisma migration and runtime paths can read DIRECT_DATABASE_URL.

Sirloin preview wiring needs SIRLOIN_DATABASE_URL pointed at the direct Neon rump database and SIRLOIN_DATABASE_POOLED_URL pointed at the pooled Neon rump database. Sirloin uses the direct URL for migrations and session-level advisory locks, and uses the pooled URL for normal runtime queries when it is set.

Health Checks

Healthcheck paths come from the service Railway manifests. Round and sirloin expose /health on the same socket as their gRPC listener so Railway PORT remains aligned with the primary service port.

Source Paths

  • docs/railway.md
  • .github/workflows/neon-branching.yml
  • apps/*/railway.json