46 lines
2.9 KiB
Markdown
46 lines
2.9 KiB
Markdown
Lies zuerst `handoff.md` in diesem Verzeichnis KOMPLETT (oben bis unten). Das ist die
|
||
verbindliche Quelle für Produkt, Stack, Regeln, Ordnerstruktur und Deployment des Projekts
|
||
**Clusev** (self-hosted Multi-Server-Control-Panel, agentless über SSH).
|
||
|
||
Kontext dieser Maschine: Debian 13, `10.10.90.136`, **nur Docker + ein sudo-User** installiert —
|
||
sonst nichts (kein PHP/Node/Composer auf dem Host). Alles läuft in Containern. Deployment = plain
|
||
Docker Compose, kein Portainer.
|
||
|
||
Arbeite in dieser Reihenfolge und stoppe an den markierten Freigabe-Punkten:
|
||
|
||
1. **`handoff.md` lesen.** Bestätige mir in 5–8 Stichpunkten, dass du Produkt, Stack und die
|
||
STRICT RULES (R1–R10, §4) verstanden hast. Wenn die Mockup-Referenz `../bastion` existiert,
|
||
sieh sie dir an (Pixel-Vorlage + Tokens).
|
||
|
||
2. **Offene Punkte (§12) abfragen, BEVOR du baust:** finaler Name (Clusev?), DB (MariaDB?),
|
||
GHCR-Namespace, ob `../bastion` vorhanden ist. Bei Unklarheit fragen — nicht raten.
|
||
|
||
3. **`rules.md` erzeugen** — die STRICT RULES R1–R10 aus §4, jede mit kurzer Begründung +
|
||
✅korrekt / ❌verboten Code-Beispiel (v.a. R1–R5: full-page Livewire-Routen, class statt Volt,
|
||
Tokens in `@theme`, keine Inline-Styles außer Progressbar-width, Löschen nur per Modal).
|
||
|
||
4. **`CLAUDE.md` erzeugen** — Produkt (§1), Stack (§3), Ordnermap (§5), Commands (§9),
|
||
Konventionen (UI Deutsch/kein Emoji, Tokens, responsive Mobile+Tablet+Desktop) + eine
|
||
"Before-you-code"-Checkliste, die auf `rules.md` verweist.
|
||
|
||
→ **FREIGABE-PUNKT:** Zeig mir `rules.md` + `CLAUDE.md`. Erst nach meinem OK weiter.
|
||
|
||
5. **Scaffold (Docker-first, §8/§9).** Host hat nur Docker → alles im Container bootstrappen:
|
||
- `Dockerfile` (php8.3-fpm + composer + node), `docker-compose.yml` (dev: app, vite, reverb,
|
||
queue, mariadb, redis — `build:`, bind-mount, Vite remote-HMR `host=0.0.0.0`,
|
||
`hmr.host=10.10.90.136`), `docker-compose.prod.yml`, `.dockerignore`.
|
||
- Laravel 12 + Livewire 3 (**class, kein Volt**) + Tailwind 4 + Vite.
|
||
- `composer require livewire/livewire wire-elements/modal phpseclib/phpseclib laravel/reverb`.
|
||
- `resources/css/app.css` mit `@theme`-Tokens aus §6 (aus `bastion.css`).
|
||
- Saubere Ordnerstruktur exakt nach §5.
|
||
|
||
→ **FREIGABE-PUNKT:** App startet im Container, leere Seite rendert, Vite-HMR läuft. Zeig mir das.
|
||
|
||
6. **v1 starten (§1 Scope).** Layout + Blade-Components (Sidebar, Topbar, Panel, Kpi, StatusPill,
|
||
StatusDot, Badge, Icon[Lucide], Ring), Dashboard als full-page Livewire-Route mit Live-Metriken
|
||
über Reverb. Mock-Daten zuerst, SSH-Layer (phpseclib) danach. Alles responsive.
|
||
|
||
Halte dich strikt an `rules.md`. Konflikt zwischen meiner Anweisung und den Regeln → nachfragen.
|
||
Verifiziere jeden Schritt (Container baut, Seite rendert, keine Console-Errors) bevor du
|
||
"fertig" sagst. Arbeite auf einem Branch, nicht auf main; committe in sinnvollen Schritten.
|