BT  ·  2026-10-10

DESIGN.md

This is a simple application monitoring webapp that uses Cloudflare workers and durable objects to monitor health endpoints for my deployed apps. Health endpoints look like a list of URLs: https://mymood.at/healthz, https://infra.sovrn.at/healthz. These endpoints return a JSON object with details about the health of their services and use status codes to indicate issues that need attention.

The app should create several durable objects in different regions: western north america, eastern north america, eastern europe, western europe, asia pacific. Using Durable Object alarms, each should wake up every 3 minutes (configurable), send GET requests to the list of monitoring endpoints, and save the status code, time of response, request duration, and JSON response to the local Sqlite storage. A trigger on the Sqlite database deletes rows older than 14 days.

A status code of 200 from a health endpoint indicates that everything is fine for that application. Any other status or a failed response due to a timeout indicates an issue with that application, and the durable object should use Cloudflare’s email service to send an alert email to [email protected] (allowed destination address) with the status response and the JSON payload in the body of the email.

A homepage available on https://monitor.rtw.run should contact each durable object via RPC stub and retrieve the lateststatus available, presented in a table with the status, time of response, and request duration (latency). Each should be similar to a details/summary element, where clicking the row opens more information about the response, which shows the most recent JSON response pretty-printed. A link at the end of each row allows opening a separate page to that particular health endpoint that shows paginated responses, with optional filters to show only non-200 responses. All pages are protected with basic auth.

Design aesthetics are not important, but UX is a priority and it should work on both desktop and mobile screens. You may use any framework except React to build the UI. Simplicity is paramount: the goal is a robust application that requires little maintenance (fewer dependencies is better). You must use Cloudflare services and deploy via wrangler (already installed in this environment and logged in).

You should discuss your design choices and present options with a rationale before building anything.