Claude Code
Good at writing the scheduler, the check worker and tests for timeouts, retries and state transitions.
Monitoring · updated 2026-11-03
Medium: Yes, with care Yes for a personal monitor of a handful of sites, but the hard part is making sure the monitor itself never goes down silently.
Sending an HTTP request on a schedule and emailing yourself on failure is a one-evening project. What you pay a monitoring service for is independence: checks from several regions, confirmation before alerting, and a monitor that does not share an outage with the thing it watches. If you build your own, run it on different infrastructure from your app and add a dead man's switch so silence is noticed.
UptimeRobot is checks your websites and APIs every few minutes and alerts you by email, SMS or chat when they go down. This page is about building your own version for personal or internal use, or to learn how this kind of product works, not about copying UptimeRobot to compete with it. How we grade.
Difficulty is for a solo builder using an AI coding tool. Skip means not worth building yourself.
| Feature | Difficulty | Why |
|---|---|---|
| HTTP(S) checks with status code and keyword match | Easy | A cron-triggered function that fetches each URL with a timeout and stores the result. |
| Email and webhook alerts on down and recovery | Easy | Alert only on state change, not on every failed check, or you will spam yourself. |
| Response time history and uptime percentage | Easy | Store results in Postgres and aggregate per day so the table stays small. |
| SSL and domain expiry warnings | Easy | Read the certificate's notAfter date during the check and warn 14 days ahead. |
| Multi-region confirmation | Medium | Run checks from two providers or regions and alert only when both agree. |
| Heartbeat (cron job) monitoring | Medium | Give each job a secret ping URL and alert when a ping is late; needs a grace period. |
| SMS and voice alerts | Medium | Twilio or similar works, but you pay per message and must handle failures and opt-outs. |
| Public status page | Easy | A read-only page generated from the same data; host it away from your app. |
| Team on-call rotations and escalation | Skip | Use a dedicated incident tool if a team depends on it. |
Your own version vs UptimeRobot, at personal or small-team scale.
Solo: $10/mo billed annually
Solo plan with 10 monitors and 60-second checks; the official page showed EUR 9 per month billed yearly (EUR 10 monthly). The free plan has 50 monitors at 5-minute intervals.
Source: uptimerobot.com/pricing. Prices change; check before deciding.
| Running cost | Per month | Notes |
|---|---|---|
| Scheduled worker (Cloudflare Workers cron, Fly.io or a small VPS) | $0–$5 | Free tiers cover a few dozen checks per minute; a $5 VPS handles hundreds. |
| Database for check results | $0–$25 | Supabase or Neon free tier is enough if you aggregate old results. |
| Email alerts | $0 | Resend or Postmark free tiers cover alert volume for a personal monitor. |
| SMS alerts | $0–$5 | Optional; you pay per message through Twilio or a similar provider. |
| Total | $0–$35/mo | Saves up to $120 a year vs UptimeRobot Solo; at the top of the range it costs $300 a year more. |
Good at writing the scheduler, the check worker and tests for timeouts, retries and state transitions.
Handy for iterating on the check logic and alert templates inside an existing repo.
Quick way to get the dashboard and Supabase tables, then move the checker to a separate worker.
Paste it into your tool, then ask for a plan before any code. Edit the specifics to match what you need.
Build a personal uptime monitor for my own sites. Stack: Next.js dashboard, Supabase Postgres and auth, and a separate scheduled worker (Cloudflare Workers cron) that runs every minute. Data model: monitors (id, user_id, name, url, method, expected_status, keyword, interval_seconds, timeout_ms, paused), checks (monitor_id, checked_at, region, ok, status_code, response_ms, error), incidents (monitor_id, started_at, resolved_at, cause). Requirements: - Worker loads due monitors, fetches each with a timeout, retries once after 20 seconds before marking it down. - Open an incident and send one email and one webhook alert on down, one on recovery. Never alert on every failed check. - Dashboard: monitor list with status, 24h and 30d uptime, response time chart, incident log. - Warn 14 days before an SSL certificate expires. - Heartbeat monitors: each gets a secret ping URL; alert if no ping within interval plus grace. Security: - Only http and https URLs. Resolve DNS and block private, loopback, link-local and cloud metadata IPs (169.254.169.254) to prevent SSRF, including after redirects. - Enable Row Level Security so users only see their own monitors. - Heartbeat tokens must be random 32-byte values; rate limit the ping endpoint. - Store webhook URLs encrypted and never log them.
AI tools often get these wrong by default. Check each one before anyone else uses the app.
They went far past the prototype: support, payments, reliability and years of iteration. Their profiles show what that took.
Pēteris Caune built Healthchecks.io
Cron job monitoring run by a solo founder, reported at $26K MRR.
Léo Baecker built Hyperping
Uptime, cron and SSL monitoring with status pages, $11K MRR in 2023.
Max Rozen built OnlineOrNot
Uptime monitoring for sites, APIs and cron jobs with hosted status pages.
Freek Van der Herten built Oh Dear
Monitoring for uptime, broken links, certificates and scheduled jobs.
Louis Lam built Uptime Kuma
Popular open-source, self-hosted monitor you can run instead of building one.
If you need UptimeRobot's job done rather than a project, these are built and supported by independent makers.
hyperping.com
Uptime, synthetic, cron and SSL monitoring with on-call alerts, incident management and branded status pages.
onlineornot.com
Uptime monitoring for websites, APIs and cron jobs, with hosted status pages.
sitesure.net
Uptime, API, SSL, DNS and background job heartbeat monitoring with status pages.
healthchecks.io
Cron job and scheduled task monitoring that sends alerts when expected pings stop arriving; open source and self-hostable.
ohdear.app
Website monitoring for uptime, broken links, certificates and scheduled jobs, co-founded with Mattias Geniar.
uptime.kuma.pet
Self-hosted monitoring tool with alerts, status pages and support for HTTP, TCP, DNS, ping and more.
You learn scheduling, timeouts, retries and state machines, plus the classic SSRF defence every app that fetches URLs needs.
Medium. Yes for a personal monitor of a handful of sites, but the hard part is making sure the monitor itself never goes down silently.
A working personal or internal MVP takes about 3–8 h with a tool like Claude Code. A polished version you would rely on every day takes about 3–5 days, mostly spent on avoiding false alarms: retries and confirmation from a second region before alerting.
Expect $0–$35/mo at personal or small-team scale (scheduled worker (cloudflare workers cron, fly.io or a small vps), database for check results, email alerts, sms alerts). UptimeRobot Solo costs $10/mo (checked 2026-11-03), so the most you would save is $120 a year, before counting your time.
Yes. A scheduled worker on a free tier plus a free Postgres database and an email API can check a few dozen URLs every minute at no cost. SMS alerts and multi-region checks are where costs start.
The monitor failing silently. If it runs on the same provider as your app, both can go down together, so host it elsewhere and add an external heartbeat that alerts you when the monitor stops reporting.
Uptime Kuma is a widely used open-source, self-hosted monitor with status pages and many alert channels. Running it on a small VPS is often faster than building from scratch.
Building your own tool that solves the same problem is common and generally fine. Copying UptimeRobot's code, design assets, brand name or content is not. Use your own name and design, respect their terms of service, and get proper advice if you plan to sell it. This page is not legal advice.