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 der Plan nicht enthält (Widget/Domain ab Basic, API/PrintFarm ab Pro), werden ausgeblendet — seit 2026-05-29 kein 🔒-Badge / Lock-Banner / Upgrade-CTA mehr (Feature-Promotion via Newsletter + App-Store, Phase 4). Ein Tenant mit allen Features (z.B. Scale) sieht alle 14 Kacheln; Free sieht 10. Direktaufruf einer nicht enthaltenen Feature-Page → 404.

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 mit has_widget, Basic+; sonst 404)
  • /settings/domain — Custom-Domain-Setup (nur mit has_custom_domain, Basic+; sonst 404)
  • /settings/subscription — aktueller Plan + 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 (9 Tabs bei vollem Feature-Umfang). Widget + Domain erscheinen nur, wenn der Plan das jeweilige Feature enthält — sonst sind die Tabs ausgeblendet (kein 🔒 mehr).

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), Application-Fee plan-abhängig (Free 15%, Basic 5%, Pro 2%, Scale 1% — siehe Plans).

  • 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 Tenant-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). → 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 Tenant-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 Tenant 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 Creator 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. Tenant-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