Description
Deploy both services to public URLs for sharing and demo.
Implementation details
- Frontend: connect GitHub repo to Vercel, set
NEXT_PUBLIC_API_URL to Railway backend URL
- Backend: Railway with
Procfile: poetry run python scripts/bootstrap_data.py && poetry run uvicorn main:app --host 0.0.0.0 --port $PORT
- Add a
railway.toml or set the Railway start command to use poetry run — Railway auto-detects pyproject.toml and runs poetry install on deploy
- Set
ANTHROPIC_API_KEY as Railway secret env var (never commit it)
- Update CORS to allow Vercel production URL
- Add GET
/health endpoint returning {"status": "ok"}
- ChromaDB must be bootstrapped on Railway: add
python scripts/bootstrap_data.py && uvicorn main:app --host 0.0.0.0 --port $PORT to Procfile or a Railway build hook
- Update README with live demo URL
Acceptance criteria
TDD
tests/test_health.py:
- GET
/health returns 200
- GET
/health returns {"status": "ok"}
Description
Deploy both services to public URLs for sharing and demo.
Implementation details
NEXT_PUBLIC_API_URLto Railway backend URLProcfile:poetry run python scripts/bootstrap_data.py && poetry run uvicorn main:app --host 0.0.0.0 --port $PORTrailway.tomlor set the Railway start command to usepoetry run— Railway auto-detectspyproject.tomland runspoetry installon deployANTHROPIC_API_KEYas Railway secret env var (never commit it)/healthendpoint returning{"status": "ok"}python scripts/bootstrap_data.py && uvicorn main:app --host 0.0.0.0 --port $PORTto Procfile or a Railway build hookAcceptance criteria
/healthreturns 200ANTHROPIC_API_KEYis a secret, not in repoTDD
tests/test_health.py:/healthreturns 200/healthreturns{"status": "ok"}