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/brandingweiter/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 mithas_widget, Basic+; sonst 404)/settings/domain— Custom-Domain-Setup (nur mithas_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:
- Stripe verbinden →
/settings/stripe - Rechtstexte hinterlegen →
/settings/legal - Rechnungsstellung einrichten →
/settings/billing - Landing Page erstellen →
/settings/landing-page - Erstes Produkt erstellen →
/products/new - 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 zurueckPOST /api/landing-page— speichert in Draft, Live bleibt unangetastetPOST /api/landing-page/publish— kopiert Draft → LivePOST /api/landing-page/default— laedt 3-Sektions-Standard-Vorlage (Hero + Pakete + CTA) mitbranding.company_nameals 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:3001ueberschreibt - 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
- Erste Schritte — Onboarding-Reihenfolge
- Pakete · Branding · Rechnungsstellung