Status page
The public status page is part of the frontend. It shows the state of eleven components without signing in.
| Address | What it is |
|---|---|
/status | The human-readable page. |
/api/status | The same summary as JSON. It replaces the raw health endpoints for outside viewers. |
How it works
The frontend pod polls each backing service's readiness endpoint over the cluster network. For the sign-in component it calls Keycloak's OpenID discovery document. It reduces the results to one of three states per component (operational, degraded, down) and one overall state. Only names, states and timestamps leave the module. Probe URLs, response codes, bodies and error text are discarded.
Results are cached for 20 seconds by default and concurrent callers share one probe run. The response carries a short Cache-Control so an edge can absorb bursts.
The eleven components are Website, Sign-in, Learning, Video lessons and recordings, Live classes, Mentorship, Programmes and ventures, Notifications, AI copilot, Analytics and reports, and Identity and profiles.
Raw health endpoints are hidden
Quarkus health and metrics live under /q. The ingress does not route /q to any service. On 2026-11-07 the status-page task recorded /q/health, /q/metrics, /q/openapi and /q/swagger-ui returning 404 on both web hosts after the change. The kubelet probes and any scraper reach pods directly and do not pass through the ingress.
/api/v1/health is still routed to the program service. It requires a token and returns 401 without one.
Sources: frontend/src/lib/status/status.ts, frontend/src/app/api/status/route.ts, .agents/tasks/status-page/ingress.md, infra/oci-devops/deploy/ingress.yaml.