Zum Hauptinhalt springen

Einstellungen — Übersicht

[admin]

Alle Tabs in Sidebar → Einstellungen im Überblick. Klick auf den jeweiligen Link für Details.

Erweiterte Einstellungen​

Oben rechts auf der Einstellungen-Seite findest du den Button "⚙️ Erweiterte Einstellungen" (/settings/advanced) — eine 3-Spalten-Grid mit allen Konfigurationsbereichen im Überblick. Quick-Tabs auf /settings bieten denselben Inhalt für die häufig genutzten Bereiche.

Reihe 1: Branding · Rechnungsstellung · Rechtstexte Reihe 2: Widget · Custom Domain · Landing Page Reihe 3: Stripe · API & Integrationen · Abonnement & Plan Reihe 4: PrintFarm Einstellungen · Danger Zone · E-Mail Vorlagen

Kacheln für Features, die für den aktuellen Zugang nicht verfügbar sind, werden ausgeblendet — seit 2026-05-29 kein 🔒-Badge / Lock-Banner / Upgrade-CTA mehr (Feature-Promotion via Newsletter + App-Store, Phase 4). Direktaufruf einer nicht verfügbaren Feature-Page → 404. Custom Domain und PrintFarm sind in Vorbereitung und werden noch nicht als verfügbare Features angeboten (siehe die jeweiligen Abschnitte unten).

Mobile (< 768px): 1-Spalten-Stack. Tablet (< 1024px): 2-Spalten.

URL-Struktur — jeder Tab hat eigene URL​

Seit dem Tab-Router-Refactor hat jeder Einstellungs-Tab eine eigene URL:

  • /settings → leitet zu /settings/branding weiter
  • /settings/branding — Farben, Schriftart, Logo, Favicon, Firmenname, Support-Email
  • /settings/billing — Rechtsform, Adresse, Steuer-ID, Rechnungs-Logo
  • /settings/legal — Impressum, AGB, Datenschutz (Markdown + Live-Preview)
  • /settings/emails — E-Mail-Vorlagen mit Template-Variablen
  • /settings/stripe — Stripe-Connect-Status + Onboarding/Dashboard-Links
  • /settings/landing-page — Drag-&-Drop Landing-Page-Builder
  • /settings/widget — Embed-Code-Generator (nur wenn das Widget-Feature aktiv ist; sonst 404)
  • /settings/domain — Custom-Domain-Setup — in Vorbereitung (gegatet über has_custom_domain; wird erst als verfügbar angeboten, sobald White-Label abgenommen ist)
  • /settings/subscription — aktueller Zugang + Upgrade-Optionen + Rechnungshistorie

Direkt-Bookmarks und Browser-History funktionieren wie erwartet — kein Tab-State-Bug.

Quick-Tabs vs. Erweiterte Einstellungen​

Die Tab-Bar auf /settings zeigt: Branding · Abonnement · E-Mail Vorlagen · Landing Page · Rechnungsstellung · Rechtstexte · Stripe · Widget · Domain. Widget + Domain erscheinen nur, wenn das jeweilige Feature aktiv ist — sonst sind die Tabs ausgeblendet (kein 🔒 mehr). Domain ist in Vorbereitung.

Tabs​

Branding​

Logo, 9 Farben, Schrift, Login-Texte, Button-Stil. Wirkt auf Portal + Landing + Widget. → Branding

Rechnungsstellung​

Rechtsform, Adresse, Steuer, Rechnungs-Logo, Stripe-Tax-Settings. → Rechnungsstellung

Pakete​

Lizenzpakete erstellen, Preise, Laufzeit, Stripe-Sync, Einschränkungen. → Pakete

Stripe​

Stripe-Connect-Onboarding (Express Account), pauschale Application-Fee (10 % in der Beta — siehe Zugang & Konditionen).

  • Neuer Account → Onboarding-Flow
  • Aktiver Account → Express-Dashboard-Login
  • Status-Indikator: pending / active / restricted

Wichtig: Im Stripe-Dashboard zusätzlich aktivieren:

  • Tax → Automatic Tax ON
  • Steuerregistrierung Deutschland hinzufügen
  • Firmenadresse vollständig

Rechtstexte​

Markdown-Editor + Live-Preview für:

  • Impressum (/impressum öffentlich)
  • AGB (/agb öffentlich)
  • Datenschutz (/datenschutz öffentlich)

Werden in Anbieter-DB gespeichert — Custom-Domain serviert sie unter eigener URL.

Landing Page​

Drag-&-Drop-Builder mit Sektionen (Hero, Features, Pakete, Carousel, FAQ, Footer-CTA). → Landing Page Builder

Widget​

Embed-Code-Generator + Live-Preview für Lizenz-Portal-Button (Shopify, WordPress, andere). → Widget

Domain​

Custom-Domain einrichten (CNAME + TXT-Verifikation, Vercel-Auto-Provisioning). In Vorbereitung — wird erst als verfügbares Feature angeboten, sobald White-Label abgenommen ist. → Custom Domain

E-Mail-Vorlagen​

Mail-Templates für Einladung, Freischaltung, Kündigung, Notifications. Dynamische Platzhalter wie {{customer_name}}, {{tenant_name}}.

FAQs​

CRUD für Anbieter-spezifische FAQs (Sidebar-Eintrag im Portal "FAQ & Support" zeigt diese). Mit Kategorien gruppierbar. Vorlagen-Library zum schnellen Start.

Onboarding-Checklist (Setup-Popup)​

Unten rechts auf jeder Admin-Seite erscheint ein dunkles Popup "🚀 Setup (X/6)" das durch die ersten 6 Onboarding-Schritte führt:

  1. Stripe verbinden → /settings/stripe
  2. Rechtstexte hinterlegen → /settings/legal
  3. Rechnungsstellung einrichten → /settings/billing
  4. Landing Page erstellen → /settings/landing-page
  5. Erstes Produkt erstellen → /products/new
  6. Erstes Paket erstellen → /payments

Klick auf das Popup → aufgeklappte Liste mit Status-Icon (✅/○), →-Link zur jeweiligen Seite und einem ✓-Button um den Schritt manuell als erledigt zu markieren (z. B. wenn Stripe via Test-Mode bereits konfiguriert ist).

Auto-Check pro Schritt: Stripe (tenants.stripe_account_id), Legal (settings.legal_imprint + legal_privacy + legal_terms), Billing (settings.billing.legal_name), Landing Page (landing_page.enabled), Produkt-Count und Paket-Count via catalog_items / license_packages.

Manuell-Erledigt-State liegt in tenants.settings.onboarding_manually_completed[] — Schritte können jederzeit wieder „un-erledigt“ werden indem der Auto-Check fehlschlägt und der Schritt aus dem Array entfernt wird.

×-Button schließt das Popup permanent (LocalStorage-Key licensio_checklist_dismissed). Wenn alle 6 Schritte erledigt sind, wird das Popup ohnehin nicht mehr angezeigt.

Landing Page — Draft/Live System (wie Shopify)​

Konzept: Der Builder editiert immer den Entwurf (landing_page.draft); Kunden sehen die Live-Version (landing_page.live). Erst wenn der Anbieter explizit auf 🚀 Live schalten klickt, wird der aktuelle Draft als neue Live-Version uebernommen.

Status-Indicator oben im Builder:

  • 🟢 Live — Draft = Live, alles ist publisht.
  • 🟠 Entwurf — ungespeicherte Aenderungen gegenueber Live; "Live schalten" ist aktiv.

Endpoints:

  • GET /api/landing-page — gibt Draft + Live-Snapshot + tenant.slug zurueck
  • POST /api/landing-page — speichert in Draft, Live bleibt unangetastet
  • POST /api/landing-page/publish — kopiert Draft → Live
  • POST /api/landing-page/default — laedt 3-Sektions-Standard-Vorlage (Hero + Pakete + CTA) mit branding.company_name als Substitution; setzt initial Live = Draft

Auto-Load der Vorlage: Falls beim ersten Oeffnen landing_page noch leer ist, ruft der Builder automatisch /api/landing-page/default auf — kein Banner, kein Confirm-Dialog. Der Anbieter sieht sofort eine fertige Vorlage zum Editieren.

Preview-URL nutzt tenant.slug dynamisch:

  • Dev: NEXT_PUBLIC_PORTAL_URL=http://localhost:3001 ueberschreibt
  • Prod: https://${tenant.slug}.licensio.io/?preview=${token} (Desktop) bzw. &mobile=true (Mobile)
  • Token-basierte Vorschau zeigt Draft — normale Besucher sehen Live

Backwards-Compat (vor Migration 053): tenants mit alter flacher landing_page-Struktur ({ enabled, sections, header, footer, preview_token }) funktionieren weiterhin — Portal liest mit Fallback, beim ersten Save migriert die API automatisch in die Draft/Live-Wrapped-Struktur.

Maintenance Mode (separater Toggle)​

In Einstellungen → Allgemein (oder via Plattform-Admin):

  • maintenance_mode — Portal komplett blockiert (zeigt /maintenance-Page)
  • admin_maintenance_mode — nur Admin-Bereich blockiert (Phase 2: getrennter Toggle, Migration 044)

Während Maintenance: Login + öffentliche Rechtstexte + /api/* ausgenommen, alles andere blockiert.

Häufige Fragen​

Wo sind die Plattform-Einstellungen (für licensio-Team)? internal.licensio.io (eigene App) für Plattform-Admins. Anbieter-Einstellungen sind alle in admin.licensio.io/settings.

Reihenfolge der Tabs änderbar? Aktuell fest verdrahtet (SettingsTabs.tsx). Phase 2 wenn Bedarf.

Direkt-Link auf einen Tab? URL-Parameter: /settings?tab=stripe öffnet sofort den Stripe-Tab. Wird auch von Stripe-Connect-OAuth-Return genutzt (?tab=stripe&connected=true).

Verwandt​