Skip to content

Latest commit

 

History

History
115 lines (84 loc) · 5.2 KB

File metadata and controls

115 lines (84 loc) · 5.2 KB

SitePulse

SitePulse is a SaaS platform for monitoring the health and uptime of any website. Add any URL for plain uptime monitoring, or connect the WordPress plugin to unlock deeper insight — audit history, SSL status, plugin vulnerabilities, database health, and PHP errors — all in one dashboard with instant alerts the moment something goes wrong.

No more manually checking sites. No more finding out a site was down hours after the fact.

Note

· Hosted on AWS
· Infrastructure provisioned with Terraform. Deployed via GitHub Actions CI/CD


SaaS App Stack

PHP Laravel MySQL Redis Caddy Docker Supervisor

Terraform GitHub Actions AWS Cloud

React TypeScript Inertia.js Tailwind CSS


Features

  • Universal uptime monitoring — add any URL and SitePulse will check it on a per-plan cadence (1–5 min). No plugin required.
  • WordPress deep monitoring — connect the lightweight plugin to get health snapshots covering plugin vulnerabilities, SSL certificate, database size, server info, and PHP errors. Full audit history stored and queryable.
  • Incident tracking — every outage is recorded with start time, HTTP status, and failure reason. Resolved automatically on recovery.
  • Instant alerts — down/up notifications via Email, Slack, Discord, or custom webhooks the moment a state transition is detected.
  • Team collaboration — invite members, assign roles (Owner / Member / Guest), and share monitoring across a team.
  • Plan-based limits — Free, Pro, and Enterprise tiers with configurable site limits, check intervals, and notification channel access.

How Uptime Monitoring Works

System cron (every minute)
  └── sites:check-due command
        └── dispatches CheckSiteHeartbeat job per due site
              ├── Plain mode      →  GET /  (any 2xx = up)
              └── WordPress mode  →  GET /heartbeat  (api_key auth, expects {ok:true},
                                     also detects PHP fatal errors in response body)

On first failure: incident created, retry in 2 min.
On second failure (confirmed down): alert dispatched to all team notification channels.
On recovery: incident resolved, recovery alert dispatched.

State Next check
Up Free: 5 min · Pro: 3 min · Enterprise: 1 min
1st failure 2 min
2nd+ failure 9 min
6+ consecutive failures 19 min

Monorepo Layout

sitepulse/
├── sitepulse-app/          # Laravel 13 app — backend API + React/Inertia frontend
└── sitepulse-wp/           # WordPress Docker dev environment
    ├── sitepulse-monitor/  # WP plugin source — tracked in git
    └── wordpress/          # Full WP install — NOT tracked in git

sitepulse-wp/sitepulse-monitor/ is the canonical plugin source. sitepulse-wp/wordpress/ is gitignored.


WordPress Plugin Stack

PHP WordPress MySQL Nginx Docker


Notification Channels

Alerts are dispatched on down and recovery events to all active channels configured per team:

Channel How
Email Blade template via Laravel Mail (Resend in production)
Slack Incoming webhook POST
Discord Incoming webhook POST
Custom Webhook JSON POST with optional HMAC-SHA256 signature (X-SPM-Signature)

If no email channel is configured, alerts fall back to the site owner's account email.


Plans

Free Pro Enterprise
Monitored sites 3 Unlimited Unlimited
Check interval 5 min 3 min 1 min
Teams 1 1 Unlimited
Notification channels Email All All