85ab829805
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>
36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
# 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 Statusseite unter `/monitor/` — Live-Status aus Monitoring-Daten. Root (`index.php`) bleibt Baustellen-Platzhalter für eine spätere eigenständige Website.
|
|
|
|
## Checkliste
|
|
|
|
- [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/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
|