Status page

Tell customers what's working, what isn't and when it will be fixed.

Instead of Atlassian Statuspage and Instatus

A status page: a banner saying how things are, then each component with 90 days of uptime bars.
The same status page on a phone, with 30 days of uptime bars.

Give it to your assistant

Copy it

Read https://whisk.run/skill. Then clone https://github.com/Whisk-Hosting/status-page, deploy it to Whisk as a new app, and give me its address.

Make it yours

Read https://whisk.run/skill. Build us a status page on Whisk, starting from https://github.com/Whisk-Hosting/status-page. Change it to suit our business: [what your business runs], [your components], [your colours]. Deploy it and give me its address.

What it does

  • One glance answers "is it up?", with each part of your service and its status
  • Incidents with a timeline: investigating, identified, monitoring, resolved
  • 90 days of uptime per component, with the incidents behind each day
  • Scheduled maintenance that starts and finishes on its own
  • Email subscribers with confirm and unsubscribe links, and an Atom feed
  • Incident history by month
  • Your name, logo, colour and support link, light and dark
  • An API so a monitor or deploy script can set statuses and open incidents
  • Statuspage-compatible JSON and a status badge

How it is built

TypeScript on Node with Hono, Postgres and plain SQL migrations. Pages are drawn on the server, with a small script for the uptime tooltips and the logo upload.

The decisions are pure functions in src/model.ts: the banner, each component's status, when maintenance is in progress and the uptime figures. The database, email and queue are thin shells around them.

There is no monitoring built in, because a check every minute would keep the app awake all day. Point any monitor at the API instead. Whisk provides the rest: public pages for visitors, team sign-in for staff, the database, email, the queue and custom domains.

Make it yours

  • Your name, logo, colour and support link
  • Your own domain, such as status.yourbusiness.com
  • Your components and groups
  • Your time zone
  • Which monitor sets the statuses, through the API

Whisk features it uses

More examples

All examples