Skip to content

Public page & integrations

Public status page

  • Header with the logo, the application title (applicationTitle, otherwise siteName) and the buttons for time zone, theme, subscription and push.
  • Overall banner with the current status, a relative note of the last update, and the absolute timestamp. The timestamp is only shown in the banner on the start page, not in the header.
  • Key figures below the banner: active incidents and outages (counting components), active maintenance, and days since the last incident or outage.
  • Component groups with one card per group. Each component shows a 90-day bar, one segment per UTC calendar day, colored by the worst status of that day.
  • Active incidents and outages, sorted by severity.
  • Scheduled and running maintenance.
  • History (/history) with the outages, resolved incidents and completed maintenance of the last six months, 20 entries per page with pagination.
  • Service detail (/service/[id]) with the availability table, monthly and quarterly SLA bars, the assigned SLA schedule (otherwise 24/7), and the incidents, maintenance and outages of the service.
  • Auto refresh: if status_refresh_minutes is greater than 0, the start page reloads itself at that interval. The default is 0, which means off.

Signed-in team members additionally see internal services (mode active_internal) on the status page.

Phone layout

  • Below the sm breakpoint, the 90-day bar shows only the last 30 days. On the overview, its label then says 30 days and the percentage is hidden. On the service detail page, the label also says 30 days and the percentage stays unchanged. The full range is shown from sm upward.
  • Tapping, clicking or keyboard-focusing a segment shows a detail line below the bar with date and status. Tapping outside, Escape or losing focus closes it. Hovering with the mouse still shows a tooltip.
  • Below sm, the monthly and quarterly bars are replaced by a list with value and target per period.
  • Below md, the availability table is shown as one card per period.
  • Below sm, the logo is smaller. Below md, the push button sits in a menu behind a bell icon.

Visitor time zone

Visitors can switch all times on the public portal between the operator's time zone and their browser time zone (lib/viewer-timezone.ts, components/viewer-timezone.tsx).

  • The globe button sits in the header before the theme toggle. It only appears if the current UTC offset of the browser zone differs from the app zone.
  • The choice is stored in the browser (localStorage, key tz-mode) and applies immediately in other open tabs as well.
  • The server always renders in the app zone. The stored choice only takes effect after the page has loaded, so there are no hydration errors.
  • Not switched are the days of the uptime bar (UTC days) and the times on "My data". The admin area always uses the app zone.

Themes

  • Light is the default. Dark can be switched with the toggle in the header. The choice is stored in the browser.
  • On first visit, the theme follows prefers-color-scheme. A small inline script applies the theme before the first paint, so there is no flash.
  • The toggle has a fixed label ("Dark mode" or "Dunkelmodus") and shows its state through aria-pressed.
  • Status colors are the same in both themes. The status badge keeps its own dark appearance.

Languages

The public UI is available in English and German (next-intl, messages/en.json and messages/de.json). The language is a site-wide setting (settings.language, default en), not a per-visitor choice. There is no language routing in the URL. It is set in the admin in the Local Settings card. <html lang> follows the setting.

All public pages are translated: status page, service detail, history, badge page, legal notice, data protection, the confirm and unsubscribe pages, "My data", the 404 page, the SLA and uptime components, and the error messages of the public forms. The footer links including "Powered by SLAtus", the relative time in the banner ("Updated … ago"), the push button's own notices, the labels of the outage cards, the badge text (badgeLabel, follows settings.language; a ?label= parameter takes precedence), the mails for unsubscribing and data access, and the "Source" value on "My data" follow the page language as well.

Still English only are:

  • the RSS feed (/feed.xml)
  • the API documentation at /api-docs and the admin interface. Both are marked as an English subtree (lang="en").
  • raw error messages from the browser or the server, for example when push permission is denied. They appear as delivered.

Date, time and number formats

Set in the admin under Settings → Locale:

  • Time zone (timezone) for display and for entering maintenance times. Daylight saving changes are handled correctly. Visitors can additionally switch to their browser zone (see above).
  • Display of the time zone next to timestamps: full name, short offset, or hidden.
  • Short and long date format (presets).
  • Decimal separator (. or ,) and decimal places (1 to 4) for all availability and SLA values, both in display and in input fields.

Incident feed and badge

Endpoint Purpose
/feed.xml RSS feed of incidents, for feed readers and chat tools
/badge.svg Dynamic SVG status badge. Parameters: style=flat and label=…. Use it as an image in a README or wiki.
/badge Embeddable page that shows the badge
  • /impressum renders the company information from the settings (name, address, contact, legal notice). If nothing is filled in, it shows a hint that no legal notice is configured.
  • /dataprotectionpolicy renders the data protection text entered as HTML in the settings. The HTML is sanitized before rendering. Only h1, h2, h3, b and i are kept, and all attributes are removed.

Showing resolved incidents

show_resolved_minutes keeps a resolved incident visible for the given number of minutes after its resolution, in green. The default is 0, so the incident disappears right away. It does not count toward the active incidents and outages in the key figures.

Public APIs

For machine-readable access, see Public API: /api/status (JSON), /feed.xml (RSS), /badge.svg (SVG) and /openapi.json with the interactive documentation at /api-docs.