Problem: Next.js frontend in production mode falls back to http://backend:8000 (Docker Compose internal hostname) when BACKEND_URL env var is not set. In Railway's distributed environment, this hostname doesn't exist, causing ECONNREFUSED errors. Solution: Create unified getBackendUrl() function with consistent fallback priority across all server-side proxying files: 1. Explicit BACKEND_URL (for Railway / custom deployment) 2. Development mode -> http://localhost:8000 3. NEXT_PUBLIC_API_URL (may be set in Railway) 4. Docker Compose default -> http://backend:8000 Changes: - New: frontend/lib/backend-url.ts - centralized URL resolution - Updated: frontend/next.config.ts - use getBackendUrl() - Updated: frontend/app/api/chat/route.ts - use getBackendUrl() - Updated: frontend/app/api/auth/google/token/route.ts - use getBackendUrl() Railway users must set BACKEND_URL=https://<backend-service>.up.railway.app Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| app | ||
| components | ||
| context | ||
| contexts | ||
| hooks | ||
| lib | ||
| public | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| Dockerfile.railway | ||
| bun.lock | ||
| components.json | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| tsconfig.json | ||