Deployment Environment
Deployment Environment
Section titled “Deployment Environment”Railway Config
Section titled “Railway Config”Railway build and deploy settings are mirrored in apps/*/railway.json. Keep each service root directory and custom config path aligned with its Docker build context. Sirloin and Brisket require the repository root with explicit apps/<service>/Dockerfile paths. Brisket’s custom config path remains /apps/brisket/railway.json.
App Stages
Section titled “App Stages”Service-level app stage values must use the normalized lowercase vocabulary: production, staging, sandbox, or development.
| Service | Stage variable |
|---|---|
| sirloin | SIRLOIN_STAGE |
| strip | STRIP_STAGE |
| brain | BRAIN_STAGE |
| brisket | BRISKET_STAGE |
| flank | FLANK_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
Section titled “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
Section titled “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
Section titled “Source Paths”- docs/railway.md
- .github/workflows/neon-branching.yml
- apps/*/railway.json