Deployment and self-hosting
Run production preflight and deploy the API and dashboard with Docker, Railway, Fly.io, or a verified platform path.
ScrumPulse deploys as two services: the FastAPI API from the repository root and the Next.js dashboard from dashboard/web.
Production preflight#
Run the repository validator before deployment:
python scripts/check_production_readiness.py --strict
It checks PostgreSQL, public HTTPS URLs, Clerk, encryption, insecure flags, and Stripe completeness.
Docker Compose#
The production Compose file expects an external PostgreSQL database:
docker compose -f docker-compose.prod.yml up --build -d
After startup, verify the API before the dashboard:
curl --fail https://<api-host>/api/readiness
curl --fail https://<dashboard-host>/
Railway#
The repository includes railway.json for the API, dashboard/web/railway.json for the web service, environment examples under deploy/railway/, and helper scripts under scripts/.
Create separate API and web services plus PostgreSQL. Set NEXT_PUBLIC_API_URL before the web build because public variables are inlined.
Fly.io#
Use fly.api.toml for the API and dashboard/web/fly.toml for the dashboard. Store deployment values with Fly secrets and deploy the API first.
Current hosted endpoints#
Repository history and a live smoke check on August 7, 2026 identified:
- Dashboard:
https://scrumpulse-dashboard.vercel.app - API:
https://scrumpulse-api.vercel.app
The API readiness response was healthy but reported environment: development. The repeatable Git-based Vercel configuration is not fully represented in the clean repository branch, so this deployment remains Needs verification before it is described as production-ready.
Scheduler#
Do not rely on a serverless API process as the durable scheduler. Configure GitHub Actions or another external scheduler and verify a terminal run result.
Post-deployment checks#
- API health and readiness.
- Dashboard home, pricing, docs, sign-in, and sign-up routes.
- Clerk sign-in and organization selection.
- Setup wizard with a non-production board.
- Dry-run trigger and action log.
- Approval and confirmation gates.
- Stripe test checkout and signed webhook, if billing is enabled.
- Scheduler execution and audit ingestion.
- Security headers and CORS from the dashboard origin.