7 Commits

Author SHA1 Message Date
karim fc572fc3f3 feat(ux): eingeloggter Kunde landet im Konto statt Login/Marketing
- renderLogin/renderRegister: bei vorhandenem Token sofort → /konto/
  (behebt 'man bleibt nicht eingeloggt' — Formular wurde trotz Token gezeigt)
- nav-account.js (auf allen Seiten via custom/head-end.html): CTAs auf
  /register/ und Navbar 'Anmelden' (/login/) → 'Mein Konto' (/konto/) sobald
  eingeloggt. So führt /hosting/ den Kunden direkt ins Konto.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 15:47:23 +02:00
karim db357b8103 feat(admin): Cockpit — Suche/Filter, Kennzahlen, klickbare Kunden-Detailansicht
- Kennzahlen-Kacheln mit Unterzeile (neu/30T, gesperrt, ARR) + Plan-Leiste
- Toolbar: Suche (E-Mail/Firma) + Plan-Filter, live
- Kundentabelle: Zeilen klickbar → Detailansicht
- Detail: Profil, Abo-Historie, Instanzen mit Öffnen/Sperren/Reaktivieren
- fix: Abmelden-Button hatte keinen Handler

E2E: Detail, Suspend→Counter, Reactivate verifiziert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:04:32 +02:00
karim 9e24ce8dd6 design: Auth-Seiten als 2-Spalter + Preis-Hierarchie
- Login/Register: links Formular, rechts Vertrauens-Panel (Logo, 🇨🇭 Daten in
  der Schweiz, Backups, kündbar) → wirkt hochwertiger als nackte Box
- Preise: empfohlene Karte hervorgehoben (angehoben, Akzent-Glow, Tönung)
- responsive: Aside/Lift fällt unter 760/860px weg

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:38:00 +02:00
karim cf0b1869d4 feat: Rechtsseiten (Impressum/AGB/Datenschutz) + Footer + Menü-Fix
- content/impressum.md, agb.md, datenschutz.md (Einzelfirma Karim, CH-Recht,
  [PLATZHALTER] für Adresse/UID/Datum — vor Produktiv juristisch prüfen)
- custom/footer.html: 4-spaltiger Footer (Produkt/Ressourcen/Rechtliches/
  Hosting-CH-Hinweis) + Styling
- hugo.yaml: 'Anmelden' im Menü; doppeltes params bei Gitea entfernt
  (icon:github wurde von type:search überschrieben → Icon war kaputt)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 00:21:01 +02:00
karim 45bb22ea14 fix(admin): noindex korrekt via params, Test-Datei entfernt
noindex muss unter params: stehen (Hextra liest .Params.noindex); als
Top-Level-Key wirkungslos. Admin-Seite jetzt noindex, betreiber.md (Test) weg.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 00:09:09 +02:00
karim a061bfa18e fix(hugo): Layout hosting→appshell umbenannt (Section-Kollision)
layouts/hosting.html kollidierte mit der content/hosting/-Section → Hugo
verlangte ein section-Template und der Build brach ab (kein public/).
Layout heisst jetzt 'appshell', login/register/konto/hosting-preise
referenzieren es. Build wieder grün, alle Seiten + Tab-CSS verifiziert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 23:55:45 +02:00
karim 60f886bf7a feat(hosting): Hosting-Marketing + Login/Konto als Vanilla-JS-Seiten
Integriert das RAPPORT-Hosting-Angebot direkt in die bestehende Hugo-Seite
(gleicher openbureau/Hextra-Look):
- /hosting        Marketing-Landing (Hero, Feature-Grid)
- /hosting-preise Abo-Übersicht (Plans aus /api/billing/plans)
- /login /register /konto  Vanilla-JS-Seiten (layouts/hosting.html +
  static/js/hosting-app.js), sprechen NUR mit /api
- custom.css: Karten-/Formular-/Plan-Styles im RAPPORT-Token-Set
- Navbar: 'Hosting' + 'Anmelden'

Bleibt sauber AGPL: kein Backend-Code, nur fetch('/api'). Das proprietäre
Backend (Auth/Stripe/Provisioning) liegt in RAPPORT-HOST.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 16:40:28 +02:00