# SOUL — 0012.de > Diese Datei ist das Herzstück des Projekts: **wofür** der Webspace existiert und **wie** wir daran arbeiten. > Für Menschen, für zukünftige Agents, für Frank-in-6-Monaten-der-vergessen-hat-warum-0012-unabhängig-von-boka-läuft. --- ## Was dieses Projekt ist **0012.de** ist kein zweiter vServer und keine Visitenkarte. Es ist ein **unabhängiger wint.global Classic-Webspace** (Plesk, PHP, FTP-Deploy) — bewusst **getrennt von `boka`** (Webtropia VPS), damit ein Ausfall des VPS nicht den letzten externen Beobachter mitnimmt. **Tagline (Landing):** *Eine Website · kein Inhalt · keine Entschuldigung* **Drei Rollen, klar getrennt:** | Rolle | Wo | Zweck | |-------|-----|--------| | **Öffentliche Präsenz** | `/` (`public/index.php`) | Brutalistischer Baustellen-Platzhalter — Domain bleibt frei für späteres Eigenes | | **Externes Monitoring** | `monitor.php`, `/monitor/` | Pull-Checks (HTTPS/SSL) + Push von boka; Alarm per E-Mail | | **Mail-Infrastruktur** | Plesk | SMTP-Relay, Postfächer für Domains ohne eigenen Mailserver | Root ist **kein** Status-Dashboard. Ops leben unter **`/monitor/`** (`noindex`) — nicht verlinkt von der Landing. --- ## Stimme & Ton Zwei Gesichter, eine Domain — nicht vermischen. ### Landing (`/`) - **Sprache:** Deutsch. Ironisches Fake-Corporate: „Was wir anbieten", Roadmap mit 3 %-Fortschrittsbalken, Pressestimmen aus dem Logfile. - **Anrede:** „Sie" — bewusst steif, als Gegenpol zu schwenk.online. - **Haltung:** Sarkasmus ohne Entschuldigung. Lieber eine scharfe Zeile als Marketing-Sprech. - **Tabu:** Keine IPs, Tokens, internen Hostnamen oder Ops-Details auf `/`. ### Status (`/monitor/`) - **Sprache:** Englisch (Labels: `ok` / `warn` / `down`, „last push X min ago"). Sachlich, read-only, ohne Witz. - **Zielgruppe:** Frank beim Debuggen — nicht SEO, nicht Besucher-Magnet. ### Repo-Dokumentation (`README.md`, `MONITORING.md`, `todo/`) - **Sprache:** Deutsch, direkt, ops-tauglich. - **Stil:** Tabellen und Checklisten statt Prosa-Wälzer. **Werte (implizit):** Unabhängigkeit vor Bequemlichkeit. Wenig bewegen, was läuft. Secrets bleiben in `.env` — nie in Git, nie auf öffentlichen Seiten. ### Wording-Beispiele | Kontext | Gut | Schlecht | |---------|-----|----------| | Landing — Status | „Status: unbelegt" | „Coming soon — exciting updates!" | | Landing — Datenschutz | „Wir sammeln nichts. Nicht aus Tugend — aus Inkompetenz." | „Ihre Daten sind uns wichtig." | | Monitor — leer | „Monitoring not initialized" | „Oops! Something went wrong 😢" | | Monitor — Heartbeat | „boka: last push 4 min ago · disk 62 %" | Interne IP oder Token-Hinweis | | Alarm-Mail | Konkret: welcher Target, seit wann, Link zu Docs | „Critical incident detected" ohne Kontext | --- ## Visuelle & technische DNA | Element | Ja | Nö | |---------|----|----| | Dark brutalist, Monospace (`IBM Plex Mono`) | ✓ | | | Akzent `#c8ff00` (acid), Warnung `#ff2a2a`, Hintergrund `#0a0a0a` | ✓ | | | Inline CSS, **kein JS** für Landing/Monitor | ✓ | | | Mobile lesbar (Breakpoint ~520px) | ✓ | | | `noindex` auf Ops-Seiten | ✓ | | | Comic Sans | | ✓ (explizit — „never again") | | Bootstrap, Stock-Corporate, WordPress-Look | | ✓ | | Framework-Bloat (Laravel, React auf Root) | | ✓ | | Secrets/IPs auf öffentlichen Seiten | | ✓ | | Link von `/` nach `/monitor/` | | ✓ | **Technik-Philosophie:** Plain PHP 8+, `declare(strict_types=1)`, shared hosting ohne Composer-Pflicht auf dem Server. Deploy per **`./scripts/deploy.sh`** (FTP → `httpdocs` + `private/config`). Konfiguration: lokal `.env`, auf dem Webspace `server.env` (via `sync-server-env.py`). Zwei Repos: **dieses** (Pull, Ingest, UI) + **`~/server` auf boka** (Push-Skript, Cron). **Signature-Features (Teil der Identität):** - **Pull + Push-Monitoring** — Webspace sieht boka von außen; interne Metriken nur per Push - **Brutalistische Baustelle** auf `/` — ehrlicher Platzhalter statt Fake-Launch - **Domain-Inventar** in `DOMAINS.md` — langfristige Übersicht, nicht Runtime --- ## Zielgruppe | Wer | Erwartung | |-----|-----------| | **Frank (Primär)** | Zuverlässige externe Checks, Mail-Relay, deploybare PHP ohne Drama | | **Zufällige Besucher auf `/`** | Kurzer Schmunzler oder Verwirrung — beides ok | | **Niemand auf `/monitor/`** | Seite ist Ops-Werkzeug, nicht Marketing (`noindex`) | --- ## Vision 0012.de existiert, damit **Infrastruktur einen unabhängigen Zeugen hat**: Wenn Traefik, Gitea oder der ganze VPS stirbt, kann der Webspace noch alarmieren — weil er woanders liegt. Die Root-Domain bleibt **bewusst unbelegt** (Baustellen-Ästhetik), bis ein eigenes Projekt reif ist — Portfolio, Experiment, Kunst, Katalog, whatever. Bis dahin: Platzhalter mit Haltung, nicht leere 404. Monitoring und Mail sind **Produktions-Infrastruktur**, keine Nebenbei-Spielerei. Änderungen an Targets (`config/targets.php`) nach Infra-Review deployen. --- ## Wie wir zusammenarbeiten ### Frank liefert, Agent bindet ein Offene Arbeit in **`todo/`** (nummeriert, mit Priorität) — nicht nur im Kopf: | Datei | Zweck | |-------|--------| | [`todo/README.md`](todo/README.md) | Übersicht, Reihenfolge, Abhängigkeiten | | [`NOTES.md`](NOTES.md) | Scratchpad, Session-Park | | [`SOUL.md`](SOUL.md) | Vision, Ton, Arbeitsweise | **Regel:** Fokussierte Änderungen — kein Scope-Creep in `public/index.php`, wenn die Aufgabe Monitoring ist (und umgekehrt). ### Arbeitsmodus Agent 1. **Root vs. `/monitor/` trennen** — Landing-Ton nicht ins Ops-Dashboard schmieren. 2. **Deploy-Pfad respektieren** — `public/` + `config/` + `server.env`; `.env` bleibt lokal. 3. **Zwei Repos im Kopf** — Push-Logik auf boka (`todo/04`, `~/server`), PHP hier. 4. **Keine Secrets** in Commits, Chat oder öffentlichem HTML. 5. **Keine Commits**, unless Frank explizit will. 6. **Plesk/Cron/Prod** — dokumentieren in `todo/`, nicht raten; Destruktives nur mit Freigabe. ### Prioritäten bei Konflikten ``` Verfügbarkeit & Alarmierung > neue Website-Features Sicherheit (keine Leaks) > öffentliche Bequemlichkeit Einfaches PHP > Framework-Upgrade Docs aktuell > cleverer Code ohne README ``` --- ## Anti-Manifest (Non-Goals) - **Kein Ersatz für boka** — kein Docker, kein Traefik, kein App-Hosting auf 0012 - **Kein schwenk.online-Klon** — andere Domain, andere Aufgabe (Visitenkarte vs. Webspace-Ops) - **Kein WordPress/CMS** auf Root — siehe [`SITE.md`](SITE.md) - **Kein Monitoring auf `/`** — Kacheln nur unter `/monitor/` - **Keine dunklen Muster** — kein Tracking, kein Engagement-Bait auf der Baustelle - **Kein Feature-Bloat** — lieber ein Check mehr in `targets.php` als ein Dashboard-Framework - **Kein „professionelles" Corporate-Deutsch** auf der Landing — der Witz ist das Feature - **Kein Comic Sans** — ausnahmslos --- ## Projekt-spezifische Regeln - Öffentliche Seiten: **keine IPs, Tokens, `.env`-Inhalte** — auch nicht „nur kurz zum Testen" - `config/targets.php`: nach manuellem Infra-Review `_meta.last_reviewed_at` bumpen und deployen - Alarm-Schwellen und Plesk-Cron: in `MONITORING.md` / `todo/05` nachschlagen, nicht erfinden - Mail-Zugangsdaten nur in `.env` / Plesk — siehe [`HOSTING.md`](HOSTING.md), [`todo/02-email-smtp.md`](todo/02-email-smtp.md) --- ## Für Agents: Quick Start 1. [`SOUL.md`](SOUL.md) lesen (du bist hier) 2. [`README.md`](README.md) — Rollen, Struktur, Schnellstart 3. [`MONITORING.md`](MONITORING.md) — Architektur Pull/Push 4. [`SITE.md`](SITE.md) — was auf `/` vs. `/monitor/` gehört 5. Änderungen am **Landing-Ton** gegen SOUL abgleichen; Monitor bleibt sachlich-englisch 6. Deploy: `.env` füllen → `python3 scripts/sync-server-env.py` → `./scripts/deploy.sh` 7. Offene Arbeit: [`todo/README.md`](todo/README.md) --- ## Ein Satz zum Mitnehmen **0012.de** ist der unabhängige Außenposten — brutalistische Leerfläche nach vorn, zuverlässiges Monitoring und Mail im Hintergrund, gebaut für den Tag, an dem boka nicht mehr antwortet.