Back to Projects

PulseWatch

BUILDING

A self-hosted uptime monitoring and incident management platform for developers and small engineering teams.

PulseWatch

Overview

PulseWatch is an observability platform built around a robust distributed worker pipeline. It schedules continuous URL probes, manages complex incident state transitions with hysteresis, and dispatches multi-channel alerts. The architecture guarantees high-availability polling without relying on external SaaS providers.

Architecture

01 — Dashboard
Next.js UI for status pages and metrics
02 — Scheduler
Cron-based heartbeat trigger
03 — Redis Streams
Distributed, reliable job queue
04 — Monitoring Workers
Global HTTP/TCP probe executors
05 — PostgreSQL
Historical latency and incident logs
06 — Incident Engine
State machine for failure handling
07 — Alert Engine
Webhook and email dispatch

Why I built this

Reliability monitoring shouldn't require sending internal API layouts to third-party services. I wanted to build an incident management system from first principles to deeply understand distributed job processing, state machines, and reliable alerting.

Engineering Challenges

  • Building a distributed job pipeline using Redis Streams that guarantees at-least-once delivery
  • Incident state machine hysteresis: distinguishing between a temporary network blip and a hard failure to prevent alert fatigue
  • Handling monitoring worker node failures seamlessly

What I learned

Reliability in a monitoring system is recursive — the tool that watches your uptime has to be more reliable than the things it watches.

Redis Streams consumer groups provide an incredibly robust primitive for reliable worker pipelines compared to standard Pub/Sub.

Stack

Next.jsNext.jsTypeScriptTypeScriptNode.jsNode.jsRedis StreamsRedis StreamsPostgreSQLPostgreSQLPrismaPrismaDockerDockerResend