⭐ Found this useful? Give it a star on GitHub! It helps us maintain and improve the project.
Symfony bundle for synthetic uptime monitoring (Uptime Kuma–style): scheduled checks, detail retention, perpetual aggregates, multi-tenant dashboard with polling sync, public status page, and notifications.
📋 Compatible with Symfony 7.4+ and 8.x (PHP 8.2+)
This bundle is FrankenPHP worker mode friendly.
- ✅ HTTP/HTTPS, TCP, DNS, SSL certificate, and Ping (ICMP) checks
- ✅ Symfony Scheduler +
nowo:uptime:run-due-checks - ✅ Ops CLI:
nowo:uptime:rollup,nowo:uptime:purge-detail,nowo:uptime:clear-data(plussync-schema/seed-demo) - ✅ Doctrine entities: tenant, monitor, check result, aggregates, incidents
- ✅ YAML retention (
detail_days) + aggregates kept forever - ✅ REST summary API for dashboard polling (
?since=delta support) - ✅ Vite + TypeScript dashboard and Chart.js charts
- ✅ Public status page per tenant (
/status/{tenantSlug}) - ✅ Email, webhook, Slack notifications (on status change)
- ✅ CRUD for monitors and tenants (Twig UI)
- ✅ Demo Symfony 7 and 8 (FrankenPHP) — see docs/DEMO-FRANKENPHP.md
- ✅ Mercure real-time dashboard sync (
dashboard.sync: mercure)
composer require nowo-tech/uptime-monitor-bundle# config/packages/nowo_uptime_monitor.yaml
nowo_uptime_monitor:
retention:
detail_days: 30php bin/console nowo:uptime:sync-schema
php bin/console nowo:uptime:seed-demo
php bin/console nowo:uptime:run-due-checks
# ops: nowo:uptime:rollup · nowo:uptime:purge-detail · nowo:uptime:clear-dataDashboard: /uptime/{tenantSlug} · Status page: /status/{tenantSlug} (default tenant main).
make up
make test
make assets
make -C demo up-symfony8- Installation
- Configuration
- PSR evaluation (REQ-CS-007)
- Usage
- Contributing
- Code of Conduct
- Changelog
- Upgrading
- Release process
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
- GitHub Actions CI requirements
- Scheduling
- Check types
- Monitor configuration (Uptime Kuma parity)
- Tenant settings (Uptime Kuma parity)
- Translations (en, es)
- Notifications
- Mercure real-time sync
- Demo with FrankenPHP
| Language | Coverage (approx.) | Command |
|---|---|---|
| PHP | 95% | make test-coverage |
| TypeScript | Vitest (api-client, poll-controller, chart-theme) | make test-ts |
| Python | N/A | — |
make test
make test-coverage
make test-coverage-90
make test-ts
make release-checkMIT — see LICENSE.
