Savannah Cloud

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:5173

The dev server proxies /api to http://localhost:8080.

Pages

RouteDescription
/loginSign in with email + password
/join?token=Accept a team invite and set password
/dashboardLive job feed, WebSocket updates, quick stats
/deploymentsApp deployments — create from GitHub, view logs, set env vars, redeploy
/pipelinesCI/CD pipeline view
/domainsCustom domain management + DNS verification status
/email3-column inbox UI — compose, sent folder, from-selector
/smsSMS compose form + delivery history
/teamMembers list, invite by email, role management
/billingPlan + usage metrics + Paystack integration
/api-keysCreate and revoke sc_... API keys
/settingsOrg 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.

On this page