docs/railway-backend.md
This guide deploys the production FastAPI backend from this monorepo.
railway login
You can use dashboard or CLI. CLI flow:
cd /path/to/gitdiagram
railway init -n gitdiagram
railway add --service gitdiagram-api
railway link --service gitdiagram-api
Required:
OPENAI_API_KEYRecommended:
OPENAI_MODEL=gpt-5.4-miniENVIRONMENT=productionWEB_CONCURRENCY=2CORS_ORIGINS=https://gitdiagram.com,https://www.gitdiagram.com,https://<your-vercel-domain>Optional:
GITHUB_PAT (higher GitHub API rate limits for repository fetches)GITHUB_CLIENT_IDGITHUB_PRIVATE_KEYGITHUB_INSTALLATION_IDAPI_ANALYTICS_KEYSet variables via CLI:
railway variables --service gitdiagram-api --set "OPENAI_API_KEY=..."
railway variables --service gitdiagram-api --set "OPENAI_MODEL=gpt-5.4-mini"
railway variables --service gitdiagram-api --set "ENVIRONMENT=production"
railway variables --service gitdiagram-api --set "WEB_CONCURRENCY=2"
railway variables --service gitdiagram-api --set "CORS_ORIGINS=https://gitdiagram.com,https://www.gitdiagram.com,https://<your-vercel-domain>"
Do not set PORT manually unless needed. Railway injects it automatically.
backend/cd /path/to/gitdiagram
railway up --service gitdiagram-api --path-as-root backend
railway domain --service gitdiagram-api
Copy the generated URL, for example:
https://gitdiagram-api-production-xxxx.up.railway.app
In your Vercel project environment variables, set:
NEXT_PUBLIC_USE_LEGACY_BACKEND=trueNEXT_PUBLIC_API_DEV_URL=https://<your-railway-domain>Then redeploy Vercel.
Note: the variable name includes "LEGACY" for backward compatibility, but this is now the primary external backend path.
GET https://<your-railway-domain>/healthz{"ok": true, "status": "ok"}railway logs --service gitdiagram-api