Skip to content
Moeijiro
← All projects

Project · Uptime monitoring

PulseWatch

Uptime monitoring for websites and APIs, with incidents, alerts and public status pages.

Scheduled checks open and resolve incidents on their own, with alerts only on state changes.

Security & MonitoringAutomation
Type
Personal open-source project
Automated tests
33 (pytest)
Built with
Python · FastAPI · asyncio
Live demo
Runs locally — not hosted
Monitors with uptime and response times

Overview

What it does

PulseWatch checks websites and APIs on a schedule, records every result, opens an incident when failures cross a threshold, alerts on Discord, Telegram or a webhook, and publishes a public status page. The effort went into a scheduler that never checks twice, incidents that don't page over one dropped packet, uptime that is never rounded up, and an SSRF guard.

Screenshots

From the running application

  • Monitors with uptime and response times
    Monitors with uptime and response times
  • Monitor detail with check history
    Monitor detail with check history
  • Public status page
    Public status page
  • Incident timeline
    Incident timeline

Captured from the app running locally with its seeded demo data. Select an image to open it full size.

Core features

What's in it

  • Scheduler

    One asyncio task with atomic claiming and bounded concurrency, so a monitor is never checked twice at once.

  • Incidents

    Opened and resolved by consecutive-failure thresholds, not single blips.

  • Alerts

    Discord, Telegram and webhook alerts when an incident opens; recovery closes it with the downtime recorded.

  • Status pages

    Public, auto-refreshing status pages with uptime that is never rounded up.

Stack & skills

Built with

Technology

  • Python
  • FastAPI
  • asyncio
  • httpx
  • SQLAlchemy
  • Next.js
  • TypeScript

What this project demonstrates

  • Monitoring
  • Async scheduling
  • Incident logic
  • Alerting

Repository & demo

Run it yourself

Seeded demo account: demo@pulsewatch.dev / pulsewatch-demo-1234.

No public live demo is hosted. Everything below runs locally with Python 3.12+ and Node 20+.

$ git clone https://github.com/Moeijiro/pulsewatch.git
$ cd pulsewatch
$ make install
$ make seed
$ make api
$ make web

Have a project in mind?

I build APIs, automation systems, Discord integrations and full-stack applications. Tell me what it should do and I'll tell you how I'd build it.