PublicStatus

Showcase · live in production

PublicStatus.
Built end-to-end on Kumiko.

Self-hostable Atlassian Statuspage alternative with uptime monitoring, custom domains, white-label branding and GDPR-compliant email subscribe. Multi-tenant, realtime via SSE, full audit trail via event sourcing. Live at publicstatus.eu since 2026-10-04, with a new design for the public status page, the admin and the auth pages. We use it ourselves for status.kumiko.rocks.

What this showcase shows

  • →Audit baked in: Component + incident lifecycle as events. Every status change reconstructible: timeline replay for compliance and postmortems.
  • →Uptime monitoring included: Availability and response time per monitor, shown as 24 hour, 7 day and 30 day charts from hourly and daily buckets. No separate Pingdom subscription required.
  • →Custom domain + white-label: status.yourcompany.com with DNS verification, logo and colors in admin, tenants see their brand, not ours.
  • →Realtime + GDPR subscribe: SSE for live updates on the public page. Email subscribe with double-opt-in and one-click unsubscribe, from delivery + jobs. Confirmation and data-access mails follow the language of the page the visitor used.
  • →Alerts where your team is: When a monitor goes down or recovers, tenant admins get a message in Slack, Discord, Microsoft Teams or Telegram. Chat alerts are part of the paid plans (Starter and up).
demo.publicstatus.eu
PublicStatus tenant status page: component states and an active incident
Visit publicstatus.eu →
publicstatus.eu · Uptime
PublicStatus uptime monitor: availability and response time over 30 days
status.kumiko.rocks
PublicStatus live status page of Kumiko itself, status.kumiko.rocks

Kumiko's own status page, live on publicstatus

How it's built

Status page, monitoring and branding: one feature graph.

defineFeature("publicstatus", …)

Component + incident lifecycle

Component CRUD, incident open / post-update / resolve, maintenance schedule. Each transition emits an event: full timeline reconstructible.

Uptime monitors + SSE

Monitoring + realtime updates

HTTP checks with availability and latency history. Public-page subscribers see status changes within milliseconds via Redis pub/sub, no client polling.

Subdomain + custom domain

Multi-tenant routing

acme.publicstatus.eu → tenant Acme. publicstatus.eu/a → admin and sign-in (/admin redirects there). Custom domain with DNS verification in admin, all served by one Bun app.

Branding + delivery

White-label + subscriber notifications

Logo, colors and page title per tenant. Every status page gets a server-rendered Open Graph card and a favicon that follows the current status. Email subscribe with double-opt-in, one-click unsubscribe. BullMQ jobs for delivery, retry, dead-letter (from bundled-features).

billing-foundation

Paid plans with consumer protection

Checkout consent, the small-business VAT note, the operator address and cancellation pages at /legal/cancel and /legal/kuendigen come from the billing-foundation consumer-protection option. The admin and auth pages have a light and a dark mode. A waitlist form on the home page collects interest.

Hosting reality

Runs on a Kubernetes cluster at Hetzner that is managed with Pulumi. The ingress splits publicstatus.eu by path between the app (admin under /a, APIs) and the Astro site. Status pages live on tenant subdomains; tenant subdomains and custom domains go to the app, custom domains get a Let's Encrypt certificate through the cluster.

If we built this, your tool too.

Asset tracker, helpdesk, CRM, internal portal: same framework, same multi-tenant, same audit, same on-prem option.