From 3558739e07ca25e3b3745f341209d16817731c7f Mon Sep 17 00:00:00 2001 From: Frank Schwenk Date: Thu, 11 Jun 2026 23:39:23 +0200 Subject: [PATCH] feat: brutalist placeholder site for 0012.de root Replace ops beacon with sarcastic standalone landing page, centered layout, no leaked data; update SITE.md that monitoring lives elsewhere. Co-authored-by: Cursor --- SITE.md | 56 +++------- public/index.php | 265 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 225 insertions(+), 96 deletions(-) diff --git a/SITE.md b/SITE.md index 8d97b84..b1864c9 100644 --- a/SITE.md +++ b/SITE.md @@ -1,53 +1,23 @@ -# 0012.de — Landing Page (Konzept) +# 0012.de — Website (Konzept) -Die Domain soll nicht leer bleiben, aber zum Projekt passen: **externer Beobachter**, nicht Marketing-Seite. +**0012.de ist eine eigene Website** — Inhalt noch offen. Kein Monitoring-Dashboard auf der Root-Domain. -## Idee: „Status Beacon“ +Monitoring, Status-Beacons, `ingest.php` usw. laufen später in **Unterverzeichnissen oder Subdomains** (z. B. `status.0012.de`, `/ops/` — noch festzulegen). -Eine minimalistische **Mission-Control-Oberfläche** — dunkel, monospace, ohne Tracking-Bloat. +## Aktuell (Platzhalter) -### Tagline +Brutalistische Startseite: scharf, dunkel, sarkastisch. Keine Secrets, keine Ops-Daten. -> **0012** · external observer node -> Watching from outside. +## Später: Status / Monitoring (nicht Root) -„0012“ als Name des Knotens (wie ein Kanal/Rufzeichen), nicht als Marketing-Marke. +Siehe [`MONITORING.md`](MONITORING.md) und [`todo/06-site-0012-landing.md`](todo/06-site-0012-landing.md) — Zielpfad anpassen, wenn Subdomain/Pfad steht. -### Inhalt (above the fold) +## Was 0012.de werden könnte -1. **Live-Status-Raster** — 12 Kacheln für die wichtigsten überwachten Endpoints (aus `MONITORING.md` Mindestliste): - - schwenk.online, gitea, pics, medis, portainer, vfb.red, … - - Farbe: grün / gelb (SSL < 14 Tage, Latenz hoch) / rot (down) - - Letzter Check-Zeitstempel +Noch unklar. Die Domain bleibt frei für etwas Eigenes — Portfolio, Experiment, Kunstprojekt, Katalog, whatever. -2. **boka-Heartbeat** — „Last push from boka: 3 min ago“ oder „⚠ no signal > 15 min“ +## Was bewusst nicht auf 0012.de / -3. **Meta-Zeile** — „This node runs on wint.global · independent of boka (89.163.231.180)“ - -### Datenquelle - -- Gleiche JSON-Datei oder SQLite, die `monitor.php` beim Cron-Lauf schreibt (`data/last-checks.json`) -- Landing Page liest nur diese Datei — **kein** Live-curl im Browser (Performance, Timeout) - -### Design - -- Hintergrund: sehr dunkles Grau (`#0d1117`) -- Akzent: Amber für Warnung, Grün `#3fb950`, Rot `#f85149` (GitHub-Dark-ähnlich) -- Schrift: system-ui oder `JetBrains Mono` via Google Fonts (ein Request) -- Kein JS-Framework — plain PHP + minimal CSS, eine Datei - -### Optional (später) - -- `/status.json` — öffentliche API für Uptime (read-only) -- RSS-Feed „incidents“ bei längeren Ausfällen -- Kleine „About“-Sektion: Link zu GitHub-Repo (wenn public) - -### Was bewusst **nicht** - -- Kein Blog, kein Portfolio — das ist Ops-Infrastruktur -- Keine Login-Fläche auf der Startseite -- Keine Details zu internen IPs/Ports (nur boka-Heartbeat als Text) - -## Umsetzung - -Siehe [`todo/06-site-0012-landing.md`](todo/06-site-0012-landing.md). +- Öffentliche Monitoring-Kacheln (→ Subdomain/Pfad) +- IPs, Tokens, `.env`-Inhalte +- Comic Sans (never again) diff --git a/public/index.php b/public/index.php index ab36b69..4987894 100644 --- a/public/index.php +++ b/public/index.php @@ -2,79 +2,238 @@ declare(strict_types=1); -require_once dirname(__DIR__) . '/private/config/bootstrap.php'; - -$domain = env('DOMAIN', '0012.de'); -$bokaIp = env('BOKA_IP', '89.163.231.180'); - -$checksFile = privateDataDir() . '/last-checks.json'; -$checks = is_readable($checksFile) - ? json_decode((string) file_get_contents($checksFile), true) - : null; - -$lastRun = is_array($checks) && isset($checks['updated_at']) - ? $checks['updated_at'] - : null; - header('Content-Type: text/html; charset=utf-8'); header('X-Robots-Tag: noindex'); + +$jahr = (int) date('Y'); ?> - <?= htmlspecialchars($domain, ENT_QUOTES, 'UTF-8') ?> · external observer + 0012 -
-

0012

-

external observer node · watching from outside

+
+
+ +

Eine Website · kein Inhalt · keine Entschuldigung

+
-
- -

Monitoring active — last check

- -

Monitoring not initialized — awaiting first cron run

- -

- Node - · independent of boka () +

+
Status: unbelegt
+

+ Willkommen auf 0012.de. Hier entsteht irgendwann etwas. + Was genau, ist noch nicht entschieden — und das ist halb Strategie, halb Bequemlichkeit.

-
-
+ + +
+

Was wir anbieten

+
+
+ Produkt + Alles Noch nichts.
+ Aber mit Überzeugung. +
+
+ Support + Schreiben Sie an die Leere.
+ Antwortzeit: ∞ +
+
+ Preise + Kostenlos.
+ Der Preis ist Ihre Zeit, die Sie gerade verschwenden. +
+
+ Datenschutz + Wir sammeln nichts.
+ Nicht aus Tugend — aus Inkompetenz. +
+
+
+ +
+

Roadmap –

+

Q1 — Idee haben
Q2 — Idee vergessen
Q3 — Diese Seite
Q4 — Sie lesen das

+

Fortschritt zur „finalen Vision“:

+
+

3 % · gerundet von 0 %

+
+ +
+

Pressestimmen (intern)

+
+ „Sieht aus wie eine Website.“ — Entwickler, bezahlt

+ „0012 — eine Zahl vor dem Fehler.“ — Logfile, 03:14 Uhr

+ „Wenigstens keine Comic Sans.“ — Besucher mit Standards +
+
+ +
+

Live

+

+ ■ + System operational · Inhalt pending · Bedeutung not found + +

+

+ Keine IPs. Keine Tokens. Nichts auf dem Server, der Ihnen zulächelt. + Nur diese Seite — und Ihr schlechtes Gewissen, noch nicht weiterzuklicken. +

+
+ + +