Dashboard
Using the Savannah Cloud React dashboard — deployments, jobs, email, SMS, billing, and more.
The Savannah Cloud dashboard is a React 18 SPA served via Nginx on port 80 in production. It connects to the API over REST and WebSocket.
Local Development
cd dashboard
npm install
npm run dev # → http://localhost:5173The dev server proxies /api to http://localhost:8080.
Pages
| Route | Description |
|---|---|
/login | Sign in with email + password |
/join?token= | Accept a team invite and set password |
/dashboard | Live job feed, WebSocket updates, quick stats |
/deployments | App deployments — create from GitHub, view logs, set env vars, redeploy |
/pipelines | CI/CD pipeline view |
/domains | Custom domain management + DNS verification status |
/email | 3-column inbox UI — compose, sent folder, from-selector |
/sms | SMS compose form + delivery history |
/team | Members list, invite by email, role management |
/billing | Plan + usage metrics + Paystack integration |
/api-keys | Create and revoke sc_... API keys |
/settings | Org settings |
WebSocket Events
The dashboard subscribes to /ws on mount. The API broadcasts a JSON event on each job status change:
{
"type": "job_update",
"job_id": "job-001",
"status": "completed",
"timestamp": "2026-05-26T10:00:05Z"
}The job row updates in place without a page refresh.
Building for Production
cd dashboard
npm run build
# Output in dashboard/dist/The Dockerfile handles this automatically in the multi-stage build. The built files are served by Nginx on port 80.