Skip to main content

Status Page Pulse

A Cloudflare Worker that monitors service health on a per-minute cron schedule and stores status data in Cloudflare R2. It serves as the data backend for the Status Page frontend.

How It Works

Cron Trigger (every minute)
--> Check all services in parallel
--> Write results to R2 bucket
- daily:{serviceId} (60-day rolling history)
- minutes:{serviceId}:{date} (1440 slots per day)

Services Monitored

IDNameDescription
cloudflareCloudflareNetwork status
websiteWebsiteMain website
r2-contentR2 ContentImage/video hosting
notion-syncNotion SyncData fetcher
notionNotionDatabase

Status Levels

  • operational -- service responding normally (under 1500ms)
  • degraded -- service responding but slow (over 1500ms)
  • down -- service unavailable or returning errors

Endpoints

MethodPathDescription
POST/triggerManually trigger a status check and R2 write
GET/healthHealth check

R2 Storage Schema

Key PatternContents
daily:{serviceId}JSON array of { date, status } entries, 60-day retention
minutes:{serviceId}:{date}JSON array of 1440 entries (one per minute), 'nodata' for unchecked slots

Daily status only escalates within a day (never downgrades from down to operational for the same date).

Tech Stack

ComponentTechnology
RuntimeCloudflare Workers
StorageCloudflare R2
LanguageTypeScript