Site Health Dashboard

A production-grade site monitoring tool. Monitor multiple websites with comprehensive health checks, beautiful dashboards, and detailed reporting.

Features

Core Monitoring

Modern Dashboard

Reliability & Performance

Reporting & Exports

Quick Start

Install & Run -> Windows (Recommended)

  1. Download the installer: SiteHealthDashboard-v2.0-Setup.exe
  2. Run the setup wizard
  3. Double-click the Site Health Dashboard shortcut
  4. The dashboard opens automatically in your browser on port 8501
No need for Python, scripts, or virtual environments. Everything is embedded.

The installer includes:

macOS/Linux Setup

cd site-health-dashboard
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
streamlit run dashboard.py

CLI Usage

python -m cli run --json results.json --html report.html
python -m cli history --limit 20
python -m cli cleanup --days 7

Configuration Example (sites.yaml)

default:
  timeout_seconds: 10
  max_response_ms: 2000
  min_ssl_days_left: 14
  check_ssl: true
  check_http_to_https_redirect: true
  check_security_headers: true
  check_robots: true
  check_sitemap: true
  check_keyword: true
  check_visual: false
  screenshot_width: 1280
  screenshot_height: 1024
  screenshot_timeout: 30

Live Production Sites

live_sites:
  - url: https://example.com
    expected_status: [200]
    keyword: "Welcome"

  - url: https://api.example.com
    expected_status: [200, 401]
    custom_headers:
      Authorization: "Bearer token"
    check_robots: false
    check_sitemap: false

Staging Sites

staging_sites:
  - url: https://staging.example.com
    expected_status: [200, 401, 403]
    check_visual: true             # Enable screenshots for staging

Per-Site Overrides

sites:
  - url: https://slow-site.com
    max_response_ms: 5000          # Allow slower response
    timeout_seconds: 15            # Longer timeout
    screenshot_timeout: 45         # Longer screenshot timeout

  - url: https://legacy.com
    min_ssl_days_left: 7           # Lower SSL threshold
    check_security_headers: false  # Skip modern header checks
    check_visual: false            # Disable screenshots for this site

Visual Screenshot Configuration

default:
  check_visual: true               # Enable screenshot capture
  screenshot_width: 1920           # Higher resolution
  screenshot_height: 1080
  screenshot_timeout: 45           # Allow more time for slow sites
  keep_screenshots_days: 7         # How long to keep screenshot files
  max_screenshots: 100             # Maximum screenshots to keep per site

Dashboard Features

Run Settings Sidebar

Main Dashboard Tabs

Dashboard

History

Configuration

Trends

Manage Sites

ℹ️ Note: If you don’t see your updated sites in the Dashboard, just switch environments in the sidebar, or go to the Configuration tab and click Reload Config.

Visual Screenshot Features

Screenshot Storage

Screenshot files are stored in a date-organized folder structure:

snapshots/
├── 2025-08-26/
│   ├── example.com_143022.png
│   └── staging.example.com_143045.png
└── thumbnails/
    └── 2025-08-26/
        ├── example.com_143022_thumb.jpg
        └── staging.example.com_143045_thumb.jpg

Other Checks

File Structure

site-health-dashboard/
├── dashboard.py              # Streamlit web interface
├── site_checks.py            # Core testing logic with visual integration
├── cli.py                    # Command-line interface
├── models.py                 # Data models and validation
├── sites.yaml                # Configuration file with live/staging separation
├── sites.bak.yaml            # Backup of the configuration file
├── requirements.txt          # Python dependencies including Playwright
├── utils/
│   ├── retry.py              # Retry logic with backoff
│   └── storage.py            # History and export utilities
├── checks/
│   ├── dns.py                # DNS resolution checks
│   ├── ssl.py                # SSL/TLS certificate checks
│   ├── http.py               # HTTP and security checks
│   └── visual.py             # Screenshot capture with Windows fixes
├── snapshots/                # Screenshot storage
│   ├── YYYY-MM-DD/           # Date-organized screenshots
│   └── thumbnails/           # Compressed thumbnail images
└── runs/                     # Historical test results
    ├── run_20241201_143022_live_abc123.json
    └── run_20241201_150045_staging_def456.json

Environment Separation

Configure separate site lists for different environments:

live_sites:
  - url: https://production.com

staging_sites:
  - url: https://staging.com
    check_visual: true  # More visual testing in staging

Reports

Generated reports will be available in the root folder:

site-health-dashboard/
├── site_health_yyyymmdd_ssmmhh.html      # HTML Report example
├── site_health_yyyymmdd_ssmmhh.json      # JSON Report example
├── site_health_yyyymmdd_ssmmhh.csv       # CSV Report example

Closing the Dashboard (Background Process)

When launching the dashboard, the app runs in the background. If you close the browser window, the dashboard still runs in the background and keeps the port (8501) occupied. To shut it down completely, hit Disconnect first. Once confirmed, you're safe to close the tab.

System Requirements

What’s New in v2.0


Ready to monitor your sites with visual verification? Install Site Health Dashboard, run it, and let the automated setup handle everything else!