2 — The public page
What JavaScript may and may not do
The public page is the complete truth with JavaScript OFF — server-
rendered SVG and tables, native hover titles on the bars and the
sparklines. /charts.js (zero dependencies) only ever toggles what
the server already rendered: the latency drill-down's window groups
(24h by default; the configured windows' daily-p95 lines ride hidden)
and the vantage show/hide chips. It reads only what the DOM carries
and never computes or invents a number — a view is not a measurement.
The board (/)
- The banner: all systems operational / N degraded / N down, or the honest empty state when no probe round has completed.
- The cards, grouped in your declared order: the worst-of badge, the honest failure line with the last-good timestamp, the per-vantage strip (each declared vantage's own state, last probe, and observed colo — the split is always shown, never merged into a quieter answer), the home vantage's latency line, and the 30/90-day uptime bars pooling every reporting vantage (gray cells are no-data days; they count neither way).
- Objectives vs reality: your declared SLOs against the measured numbers, with "missing" in plain view.
Incidents and their update trail
Incidents carry a timestamped trail (investigating → identified →
monitoring → resolved); the card's live phase is the last update's
status. A live incident may publish its trail before the full
write-up lands. The timeline is grouped by month; the Statuspage-era
/history URL serves it too.
Scheduled maintenance
kind: maintenance rows render in their own section while upcoming
or in flight, then fold into the history. They are declared windows,
never observed downtime, and never feed the uptime numbers — the page
says so.
The feeds
/feed.xml (RSS 2.0) and /feed.atom (Atom 1.0); the Statuspage-era
/history.rss and /history.atom serve the same content. Every feed
path takes ?service=<id> for a per-service feed (an unknown id
answers 404). Maintenance items carry the Maintenance: title prefix.
Email subscriptions
The form on the page: an address, and optionally the services you care about (leave all unchecked for every service). A confirmation mail lands first (the surface honestly answers 503 when no mail provider is configured); every published incident that touches your selection mails you once, and every mail carries its own unsubscribe link — which DELETES the subscription entirely.
The embeddable badge
/badge.svg is the one-glance answer for any other site: the worst-of
verdict (overall, or ?service=<id> for one service), honest to the
pixel — no data renders gray, never green. Embed it like any image:
<img src="https://status.example.com/badge.svg" alt="Service status" />
The page's one word
The banner, the badge, and status.indicator in /api/summary.json
all carry the page's state: all systems operational / degraded
performance / partial outage (some services down) / major outage (the
majority down) / maintenance (a declared window running). The words
are the strings contract's page.* keys — renamable in config like
every chrome word. A declared maintenance window is named as such
while it runs; the cards beneath still tell the per-service truth,
and a majority-down outage outranks the declaration. Groups carry
their own worst-of in each section header, and services an operator
marked only_show_if_degraded fold into a count while healthy —
never while failing.