feat: add monitoring dashboard under /monitor/

Status page and JSON API read from private/data; root index.php stays a placeholder. Mark todo 06 done.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Frank Schwenk
2026-06-12 15:22:00 +02:00
parent 226bbe1bf7
commit 85ab829805
9 changed files with 433 additions and 20 deletions
+16 -11
View File
@@ -1,30 +1,35 @@
# 06 — Landing Page 0012.de (Status Beacon)
# 06 — Status-Dashboard unter `/monitor/`
**Priorität:** medium
**Status:** erledigt (2026-06-12)
**Abhängigkeiten:** 03 (liefert `last-checks.json`)
**Konzept:** [`../SITE.md`](../SITE.md)
## Ziel
Öffentliche, minimale Startseite — Live-Status aus Monitoring-Daten, kein Leer-Domain-Eindruck.
Öffentliche, minimale Statusseite unter `/monitor/` — Live-Status aus Monitoring-Daten. Root (`index.php`) bleibt Baustellen-Platzhalter für eine spätere eigenständige Website.
## Checkliste
- [ ] `public/index.php` — liest `data/last-checks.json` + `data/boka-status.json`
- [ ] Raster: ~12 Kacheln, Farbe nach Status (ok / warn / down)
- [ ] boka-Heartbeat-Zeile („last push X min ago“)
- [ ] Dark-Theme CSS inline oder eine `assets/style.css`
- [ ] Graceful fallback wenn JSON fehlt („Monitoring not initialized“)
- [ ] Keine sensiblen Daten (Tokens, interne Fehlerdetails)
- [ ] Optional: `public/status.json` read-only API
- [ ] Meta: `noindex` erwägen (Ops-Seite, keine SEO)
- [x] `public/monitor/index.php` — liest `private/data/last-checks.json` + `boka-status.json`
- [x] `config/status-view.php` — gemeinsame Aufbereitung für HTML + JSON
- [x] Raster: Kacheln, Farbe nach Status (ok / warn / down)
- [x] boka-Heartbeat-Zeile („last push X min ago“)
- [x] Dark-Theme CSS inline
- [x] Graceful fallback wenn JSON fehlt („Monitoring not initialized“)
- [x] Keine sensiblen Daten (Tokens, IPs, interne Test-Targets `_…`)
- [x] `public/monitor/status.php` read-only JSON-API (+ `.htaccess` → `status.json`)
- [x] Meta: `noindex` (Ops-Seite, keine SEO)
## Akzeptanzkriterien
- `https://0012.de/` zeigt aktuellen Status nach Cron-Lauf
- `https://0012.de/monitor/` zeigt aktuellen Status nach Cron-Lauf
- `https://0012.de/` bleibt unveränderte Baustellenseite
- Seite lädt ohne JavaScript
- Mobile lesbar
## Nicht im Scope
- Monitoring auf `public/index.php`
- Blog, CMS, WordPress
- Link von Root zur Ops-Seite
+2 -2
View File
@@ -9,7 +9,7 @@ Nummerierte Todos für den 0012.de-Webspace. Abhängigkeiten beachten.
| 03 | [03-monitoring-pull-phase1.md](03-monitoring-pull-phase1.md) | **high** | `monitor.php`, HTTPS/SSL-Checks, Alarm |
| 04 | [04-monitoring-push-boka.md](04-monitoring-push-boka.md) | **medium** | Push von boka → `ingest.php` — erledigt |
| 05 | [05-plesk-cron.md](05-plesk-cron.md) | **high** | Geplante Aufgaben in Plesk — erledigt |
| 06 | [06-site-0012-landing.md](06-site-0012-landing.md) | **medium** | Status-Beacon Landing Page |
| 06 | [06-site-0012-landing.md](06-site-0012-landing.md) | **medium** | Status-Dashboard unter `/monitor/` — erledigt |
| 07 | [07-mail-domains-external.md](07-mail-domains-external.md) | **medium** | MX für Domains ohne Mailserver |
| 08 | [08-monitoring-phase2.md](08-monitoring-phase2.md) | **medium** | API-Health, Latenz, Backup-Heartbeat |
| 09 | [09-monitoring-phase3.md](09-monitoring-phase3.md) | **low** | Rest-Domains, Dashboard, Header-Checks |
@@ -29,7 +29,7 @@ Todo **11** — boka SMTP-Relay; abhängig von erledigtem **02**, kein Blocker f
## Empfohlene Reihenfolge
```
01 → 02 → 05 ✓ → 03 ✓ → 06
01 → 02 → 05 ✓ → 03 ✓ → 06 ✓
↘ 04 ✓ (Push ingest.php)
07 (wenn Domains feststehen)
08 → 09