SpectraEYE is a complete platform for monitoring, incident management, and operational communication (SaaS + On-Premise). It centralizes critical job monitoring, incident escalation, and team collaboration.
- About the Project
- Key Features
- Technology Stack
- System Architecture
- Project Structure
- Installation & Setup
- API Documentation
- License
SpectraEYE is built to ensure high availability and transparency for modern services. It provides a unified interface for:
- Monitoring HTTP services, TCP ports, and Cron jobs (Heartbeats).
- Managing the entire incident lifecycle from detection to post-mortem.
- Communicating status updates to end-users via public Status Pages.
- Orchestrating team responses with On-Call schedules and escalation policies.
- Multi-Protocol Checks: HTTP, Host Ping, TCP, Keyword Search (
contains/not_contains). - Detailed Logging: Response times, status codes, and error tracking.
- Heartbeats: Cron job monitoring with grace periods for passive checks.
- Maintenance Windows: Scheduled downtime handling to prevent false alerts.
- Full Workflow: Create -> Acknowledge -> Resolve -> Post-Mortem.
- Timeline: Detailed history of status changes, ownership updates, and comments.
- Smart Escalation: Automatic escalation to higher-tier teams if unmatched.
- Rich Media: Support for image and document attachments in incident records.
- Rotations: Flexible on-call schedules with daily/weekly rotations.
- Overrides & Swaps: Manual overrides and shift swap request workflows.
- API Integration: Endpoint to query "Who is on-call now?".
- Public Status Hub: Customizable pages to showcase system health.
- Subscriptions: End-users can subscribe via email/SMS for updates.
- Maintenance Announcements: Scheduled maintenance notices.
- Channels: Email (SendGrid), SMS/Voice (Twilio), In-App.
- Chat Ops: Internal chat, reaction support, and team-based channels.
- Outbound: Slack, Discord, Microsoft Teams, Webhooks.
- Inbound: Webhooks for Grafana, Prometheus, Datadog.
- Language: PHP 8.x
- Framework: Custom MVP with Illuminate/Database (Eloquent)
- Database: MySQL 8.x
- Email: PHPMailer + Symfony Mailer + SendGrid
- Voice/SMS: Twilio SDK & Webklex IMAP
- Libraries: jQuery, Chart.js (Analytics), FullCalendar (Scheduling)
- Editor: Quill.js (Rich Text)
- Search: Fuse.js
flowchart LR
subgraph Clients
UI[Browser UI]
API[API Clients]
PUB[Public Status Page Visitors]
end
UI -->|HTTP| APP[PHP Front Controller]
API -->|REST /api/v1| APP
PUB -->|Public pages| APP
APP --> CTRL[Controllers]
CTRL --> SRV[Services]
SRV --> DB[(MySQL)]
CRON[Scheduled Jobs] --> SRV
SRV --> OUT[Outbound Integrations]
SRV --> NOTIF[Email / SMS / Voice]
How a failed check triggers an incident.
sequenceDiagram
participant Job as Cron Job
participant Check as Monitor/Heartbeat Check
participant DB as Database
participant Inc as Incident Logic
participant Notify as Notification
Job->>Check: Execute Check
Check->>DB: Log Status
alt DOWN / FAILED
Check->>Inc: Create Incident
Inc->>DB: Record Incident + Timeline
Inc-->>Notify: Send Email/SMS/Voice
Notify-->>DB: Audit Notification
end
Simplified Entity-Relationship Diagram.
erDiagram
ORGANISATIONS ||--o{ USERS : has
USERS ||--o{ USER_ROLES : assigned
ORGANISATIONS ||--o{ MONITOR : owns
MONITOR ||--o{ MONITOR_LOGS : logs
ORGANISATIONS ||--o{ HEARTBEATS : owns
ORGANISATIONS ||--o{ INCIDENT : tracks
INCIDENT ||--o{ INCIDENT_TIMELINE : timeline
ORGANISATIONS ||--o{ STATUS_PAGES : publishes
STATUS_PAGES ||--o{ STATUS_REPORTS : reports
ORGANISATIONS ||--o{ ON_CALL_SCHEDULES : manages
SpectraEYE/
βββ assets/ # UI assets, JS libraries, translations
βββ config/ # Database, SMTP, Twilio configurations
βββ includes/ # Layout partials, language loaders
βββ src/
β βββ Controllers/ # Request handling
β βββ Models/ # Eloquent models
β βββ Services/ # Business logic
β βββ jobs/ # Cron scripts (monitoring logic)
βββ public/ # Publicly accessible assets
βββ storage/ # Logs and cache
βββ index.php # Application Entry Point- Requirements: PHP 8.x, MySQL 8.x, Composer.
- Cron Jobs: Set up crontabs for scripts in
src/jobs/.
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/v1/health |
Public system health check |
GET |
/api/v1.1/heartbeat/{id} |
Heartbeat ping endpoint |
GET |
/api/v1/monitors |
List all monitors |
POST |
/api/v1/incidents |
Create a new incident |
Full OpenAPI specification available in swagger.yaml.
Distributed under the Proprietary License. See LICENSE for more information.
**Built with β€οΈ by the SpectraEYE Team**