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:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user