Skip to content

Uptime Watcher - Cross-Platform GUI-based application to monitor uptime. Builds available for Windows, Mac, and Linux in a variety of formats.

License

Unlicense, Unlicense licenses found

Licenses found

Unlicense
LICENSE
Unlicense
UNLICENSE
Notifications You must be signed in to change notification settings

Nick2bad4u/Uptime-Watcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,157 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ“Š Uptime Watcher

Version License Electron React TypeScript Build Status Quality Gate Coverage Downloads Visitor Count GitHub Stars GitHub Forks Ask DeepWiki

A Electron desktop application for uptime monitoring Track multiple services simultaneously with real-time updates, response time analytics, and historical data visualization

Application screenshots will be added here once available

Uptime Watcher Mascot

What is Uptime Watcher?

Uptime Watcher is a desktop application built with modern web technologies that provides monitoring capabilities for websites, APIs, servers, and network services. Unlike most monitoring tools, there's no cloud dependency or command-line interface required. You can monitor everything with ease from a GUI.

✨ Key features

🌐 Multi-Protocol Monitoring πŸ“Š Real-Time Analytics πŸ”” Smart Notifications
14 monitor types: HTTP family (6 variants) Live status updates Desktop alerts for outages
Transport: TCP ports, ICMP ping Response time tracking Sound notifications
Network services: DNS resolution, SSL certificates Historical data visualization Custom alert thresholds
Advanced: CDN drift, replication lag, WebSocket health Performance metrics Status change detection

Core capabilities

  • 🎯 Multi-Service Monitoring: Fourteen built-in monitor types covering HTTP variants (status, headers, JSON fields, keywords, latency), DNS, SSL certificates, TCP ports, ICMP ping, CDN edge drift, replication lag, heartbeat endpoints, and WebSocket keepalive health
  • ⚑ Real-Time Updates: Live status changes with sub-second responsiveness
  • πŸ“ˆ Performance Analytics: Response time tracking with trend analysis
  • πŸ“œ Historical Data: Comprehensive uptime history with SQLite storage
  • βš™οΈ Flexible Configuration: Customizable check intervals from 5 seconds to 30 days
  • πŸ’Ύ Data Persistence: Local SQLite database with backup/restore functionality
  • πŸ” Retention Sync: Renderer settings stay aligned with orchestrator/database changes via settings:history-limit-updated
  • ⚑ Instant Manual Checks: Optimistic status updates immediately after manual monitor checks resolve

Monitor types

Category Monitor Primary objective Highlights
HTTP Availability HTTP (Website/API) Measure general availability and response time Handles redirects, captures response code, records latency
HTTP Validation HTTP Status Code Enforce an exact response status Marks monitor degraded/down when status deviates from expectation
HTTP Content HTTP Header Match Validate specific response headers Case-insensitive comparisons with retry-aware checks
HTTP Content HTTP Keyword Match Ensure body contains a keyword Case-insensitive substring search for rapid regressions
HTTP Content HTTP JSON Match Inspect JSON payload fields JSON path extraction with typed comparison
HTTP Performance HTTP Latency Threshold Detect slow responses Flags degraded when latency exceeds configured threshold
Transport Port (Host/Port) Verify TCP connectivity Connection handshake timing with configurable ports
Transport Ping (Host) Check reachability ICMP ping with latency sampling and packet loss handling
Network Services DNS (Domain Resolution) Resolve DNS records Supports A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, NAPTR, SOA, TLSA, ANY
Security SSL Certificate Track TLS validity Warns on expiry windows and handshake anomalies
Edge Delivery CDN Edge Consistency Compare edge vs origin responses Detects drift in status/content across edge nodes
Data Platforms Replication Lag Monitor replica freshness Compares timestamps between primary and replica endpoints
Application Health Server Heartbeat Validate custom heartbeat payloads Status/timestamp drift analysis with JSON path extraction
Realtime Channels WebSocket Keepalive Ensure WebSocket responsiveness Ping/pong watchdog for stalled connections

πŸ› οΈ Technology stack

Frontend Architecture

React TypeScript Tailwind CSS Vite

Desktop Framework

Electron Node.js

State & Data Management

Zustand SQLite

Development & Quality

Vitest ESLint Prettier

πŸš€ Quick start

Installation

Option 1: Download release (Recommended)

# Download the latest release from GitHub
# Available for Windows, macOS, and Linux

πŸ‘‰ Download Latest Release

Option 2: Build from source

# Clone the repository
git clone https://github.com/Nick2bad4u/Uptime-Watcher.git
cd Uptime-Watcher

# Install dependencies
npm install

# Start development environment
npm run electron-dev               # Append flags if needed: npm run electron-dev -- --log-debug

Screenshots & demo

Application screenshots and demo videos will be added in future releases.

Key interface components:

  • πŸ“Š Main Dashboard: Real-time monitoring overview with service status across all 14 monitor types
  • βš™οΈ Monitor Configuration: Easy setup for HTTP variants, TCP ports, DNS, ping, SSL certificates, CDN edge checks, replication lag, heartbeat validation, and WebSocket keepalive
  • πŸ“ˆ Historical Analytics: Response time graphs and uptime statistics for every monitored endpoint
  • πŸ”” Notification System: Customizable desktop alerts for status changes across all monitor types

πŸ‘¨β€πŸ’» Development

Development setup

# Start Vite dev server only
npm run dev

# Start Electron only (requires Vite to be running)
npm run electron

# Start both Vite and Electron concurrently (recommended)
npm run electron-dev               # Supports flags: npm run electron-dev -- --log-debug

# Build for production
npm run build

# Package the application
npm run dist

Development prerequisites

Requirement Version Download
Node.js 24.8+ (required) Download
npm 11.6.4+ (included with Node.js) Docs
Git Latest version Download

> πŸ’‘ Tip: Check out the Developer Quick Start Guide for detailed setup instructions and architecture overview.

Quality checks

npm run lint           # ESLint for all TS/JS sources with caching
npm run lint:css       # Stylelint for CSS/Tailwind layers across src/electron/shared/docs
npm run lint:fix       # ESLint auto-fix pass (JS/TS only)
npm run lint:css:fix   # Stylelint auto-fix pass
npm run format         # Aggregated fixer (Prettier + Stylelint + ESLint + remark)
npm run check-types    # Full project reference type-check (tsc --build)
npm run docs:check-links # Validates documentation cross-links

Monitoring recommendations

For practical guidance on configuring monitors and writing tests, see our comprehensive testing documentation:

Fuzzing and property-based tests

For running and tuning our fast-check based fuzzing suites, see:

End-to-end testing with Playwright

For comprehensive testing with Playwright, including setup, configuration, and troubleshooting common issues:

IPC automation workflow

  • npm run generate:ipc – Regenerates preload bridge typings and the channel inventory.
  • npm run check:ipc – Validates that generated artifacts are in sync; this command runs in CI.

Need deeper guidance? See the IPC Automation Workflow guide for examples, troubleshooting, and CI integration tips.

Architectural principles

The application follows a service-oriented architecture with clear separation of concerns:

System architecture overview

flowchart LR
    classDef persona fill:#1f2937,stroke:#fbbf24,color:#f9fafb,font-weight:bold;
    classDef main fill:#1e1b4b,stroke:#ec4899,color:#fce7f3;
    classDef renderer fill:#0f172a,stroke:#06b6d4,color:#cffafe;
    classDef data fill:#064e3b,stroke:#10b981,color:#d1fae5;
    classDef service fill:#312e81,stroke:#8b5cf6,color:#e9d5ff;
    classDef infra fill:#451a03,stroke:#f59e0b,color:#fef3c7;
    linkStyle default stroke-width:2px;

    User((πŸ‘©β€πŸ’» Operator)):::persona
    subgraph Renderer['Renderer Β· React + Zustand']
        direction TB
        UI['React UI Components']
        Store['Zustand Domain Stores']
        Telemetry['UX Telemetry Hooks']
    end
    subgraph Main['Electron Main Process']
        direction TB
        Services['Monitoring Orchestrator']
        IPC['Typed IPC Gateway']
        Scheduler['Task Scheduler']
        EventBus['TypedEventBus']
    end
    subgraph Persistence['Local Persistence & Cache']
        direction TB
        SQLite[(SQLite Database)]
        Cache[(In-Memory Cache)]
        Backups['Backup Service']
    end
    subgraph Integrations['Infrastructure & Services']
        direction TB
  Monitors['Protocol Workers
HTTP Family β€’ DNS β€’ SSL β€’ Ping β€’ Port β€’ CDN β€’ Replication β€’ Heartbeat β€’ WebSocket']
        Alerts['Notification Engine']
    end

    User -->|Configures| UI
    UI --> Store
    Store -->|Requests| IPC
    IPC --> Services
    Services --> EventBus
    Services --> Scheduler
    Scheduler --> Monitors
    Monitors --> Services
    Services -->|Status Events| IPC
    IPC --> Store
    Store --> Telemetry --> EventBus
    Services --> SQLite
    SQLite --> Cache
    Cache --> Services
    SQLite --> Backups
    EventBus --> Alerts
    Alerts --> User

    class Services,IPC,Scheduler,EventBus,Monitors,Alerts service;
    class UI,Store,Telemetry renderer;
    class Integrations infra;

    click Services "docs/Architecture/README.md" "Open architecture documentation"
    click Store "docs/Architecture/ADRs/ADR_004_FRONTEND_STATE_MANAGEMENT.md" "Read ADR-004"
    click IPC "docs/Architecture/ADRs/ADR_005_IPC_COMMUNICATION_PROTOCOL.md" "Read IPC protocol"
    click EventBus "docs/Architecture/ADRs/ADR_002_EVENT_DRIVEN_ARCHITECTURE.md" "Read event-driven architecture"
    click SQLite "docs/Architecture/ADRs/ADR_001_REPOSITORY_PATTERN.md" "Review repository pattern"
Loading

πŸ”§ Core components

  • πŸ–₯️ Main Process (Electron): Service container with dependency injection
  • 🎨 Renderer Process (React): Component-based UI with Zustand state management
  • πŸ”— IPC Communication: Type-safe communication via contextBridge
  • πŸ—ƒοΈ Database Layer: Repository pattern with SQLite and transaction safety
  • πŸ“‘ Event System: TypedEventBus for cross-service communication
  • πŸ“Š Monitoring System: Enhanced monitoring with operation correlation

🎯 Key design features

  • πŸ—οΈ Service-Oriented Architecture: Modular, testable service design
  • πŸ”’ Type Safety: Strict TypeScript with comprehensive interfaces
  • πŸ“Š Enhanced Monitoring: Race condition prevention and operation correlation
  • πŸ—ƒοΈ Repository Pattern: Transactional database operations
  • 🎯 Event-Driven: Reactive communication between services

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

🎯 Ways to contribute

  • πŸ› Bug Reports: Found an issue? Open an issue
  • πŸ’‘ Feature Requests: Have an idea? Start a discussion
  • πŸ”§ Code Contributions: Submit pull requests with improvements
  • πŸ“š Documentation: Help improve our docs and guides
  • πŸ§ͺ Testing: Help test new features and report issues

πŸ“‹ Development guidelines

  1. Fork the Repository and create a feature branch
  2. Follow Code Standards (TypeScript, ESLint, Prettier)
  3. Write Tests for new functionality
  4. Update Documentation for any user-facing changes
  5. Submit a Pull Request with a clear description

πŸ“„ License

License badge.

This project is released under the Unlicense - Public Domain

You are free to use, modify, and distribute this software for any purpose, commercial or non-commercial, without any restrictions. Credit is appreciated but not required.


Get help

GitHub Issues badge. Documentation badge.


Made with ❀️ by Nick2bad4u

Last updated: December 2025 β€’ Version 19.1.0

All Contributors

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Nick2bad4u
Nick2bad4u

️️️️♿️ πŸ”Š πŸ› πŸ’Ό πŸ’» πŸ–‹ 🎨 πŸ“– πŸ’΅ πŸ€” πŸš‡ 🚧 πŸ”Œ πŸ“† πŸ”¬ πŸ‘€ ⚠️ πŸ”§
github-actions[bot]
github-actions[bot]

πŸš‡ πŸ›‘οΈ πŸ”§ ⚠️ πŸ‘€ 🚧 🚧
dependabot[bot]
dependabot[bot]

πŸš‡ πŸ›‘οΈ
StepSecurity Bot
StepSecurity Bot

πŸ›‘οΈ πŸš‡ 🚧
Snyk bot
Snyk bot

πŸ›‘οΈ πŸš‡ 🚧 πŸ‘€

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Uptime Watcher - Cross-Platform GUI-based application to monitor uptime. Builds available for Windows, Mac, and Linux in a variety of formats.

Topics

Resources

License

Unlicense, Unlicense licenses found

Licenses found

Unlicense
LICENSE
Unlicense
UNLICENSE

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 6