Files
Calbook/design.md

4.3 KiB
Raw Permalink Blame History

design.md Designsystem für das Buchungssystem

Übersicht

Dieses Dokument beschreibt das aktuelle Designsystem von CalBook. Es dient als Referenz für Konsistenz bei Weiterentwicklungen.


1) Produktkontext

Zwei Bereiche:

  1. Kundenansicht (/buchen) Öffentliche Buchungsoberfläche

    • Ablauf: Person wählen → Datum → Uhrzeit → Kontaktdaten → Bestätigung
    • Auto-Scroll zum nächsten Schritt
    • Framer-Motion-Animationen im Success-Screen
  2. Admin-Backend (/admin/*) Interne Verwaltungsoberfläche

    • 9 Seiten: Dashboard, Termine, Kalender, E-Mails, Branding, Rechtliches, Instant Meeting, Backup, Einstellungen
    • Seiten-Layout einheitlich: Sidebar (260px) + Content (max-w-6xl, zentriert)
    • Framer-Motion AnimatedPage-Wrapper für konsistente Page-Transitions

2) Farbstimmung

  • Kundenansicht: slate-50 Hintergrund, indigo-600 als Akzentfarbe
  • Admin: slate-50 Hintergrund, slate-900 für Header/Aktionen, indigo-600 für aktive Elemente
  • Statusfarben: emerald (bestätigt/aktiv), amber (ausstehend/no-show), red (Fehler/storniert)
  • Text: slate-900 (primär), slate-500 (sekundär), slate-400 (deaktiviert)

3) Typografie

  • Schrift: System-UI-Stack (font-sans) via Tailwind
  • Hierarchie: text-3xl font-black (Seitentitel) → text-lg font-bold (Sektionsheader) → text-sm font-medium (Fließtext) → text-xs (Metadaten)
  • Labels: text-xs font-bold uppercase tracking-wider text-slate-500

4) Komponenten

Cards

rounded-2xl border border-slate-200 bg-white shadow-sm

Buttons

  • Primär: bg-slate-900 text-white hover:bg-slate-800 rounded-xl
  • Sekundär: border border-slate-200 bg-white hover:bg-slate-50 rounded-xl
  • Destruktiv: bg-red-600 text-white hover:bg-red-700 rounded-xl

Inputs

h-11 rounded-xl border border-slate-200 bg-slate-50 px-4
focus:border-indigo-600 focus:ring-1 focus:ring-indigo-600

Tabs

rounded-t-2xl border border-b-0 bg-slate-50/80
Aktiv: border-b-2 border-slate-900 bg-white text-slate-900
Inaktiv: text-slate-500 hover:bg-white/50

5) Admin-Layout

  • Desktop: Fixierte Sidebar links (260px), Content rechts (lg:pl-60)
  • Mobile: Topbar mit Burger-Menü, Slide-Over-Navigation
  • Animation: AnimatedPage-Wrapper (framer-motion, key={pathname}) für Page-Transitions
  • Loading: loading.tsx mit Skeleton-Karten, erscheint sofort bei Navigation

6) Navigation

  • Sidebar: 8 Items mit Icons (Dashboard, Termine, Kalender, E-Mails, Branding, Rechtliches, Instant Meeting, Backup, Einstellungen)
  • Bottom: Link zur öffentlichen Buchung + Logout
  • Aktiver Zustand: bg-indigo-50 text-indigo-600

7) Interaktionsmuster

  • Modale/Dialoge: ConfirmDialog-Komponente mit Backdrop, Danger/Default-Variante
  • Inline-Edit: Kalender-Personen bearbeiten direkt in der Zeile statt Modal
  • Expand/Collapse: Chevron-Icons für Detail-Panels (Dashboard-Buchungen, Kalender-Ressourcen)
  • Toast: sonner-Bibliothek, Position top-right, richColors

8) Buchungs-Flow

  • Schritte: 1. Person → 2. Datum → 3. Uhrzeit → 4. Kontaktdaten
  • Auto-Scroll: Nach jeder Auswahl scrollt die Seite zum nächsten Schritt
  • Kalender: Monatsraster mit Verfügbarkeits-Indikatoren
  • Slots: Flexible Buttons, 15-Minuten-Raster
  • Formular: Name, E-Mail, Telefon (optional), Thema (optional)
  • Success: Framer-Motion animierte Bestätigungskarte, ICS-Download, "Weiteren Termin"-Button

9) Email-Templates

  • Event-Typen: 10 Kategorien (Bestätigung, Benachrichtigung, Stornierung, Erinnerungen, Instant Meeting, SMTP-Test)
  • Sidebar: Gruppierte Event-Typ-Auswahl (Buchung/Stornierung/Erinnerungen/Spezial)
  • Live-Vorschau: Immer sichtbar, aktualisiert bei Template-Wechsel
  • Design-Styles: 9 vordefinierte Farbschemas (Minimal, Corporate, Startup, Serif, Mono, Glass, Ink, Warm, Soft)
  • Editor: Inline unter der Template-Liste, Name/Betreff/Inhalt-Felder

10) Backup

  • Export: JSON-Download mit allen Daten (inkl. CalDAV-Key für Re-Encryption)
  • Import: Upload mit Vorschau, Schritt-für-Schritt-Roadmap, Fehler pro Kategorie sichtbar
  • URL-Filter: PUBLIC_URL, NEXTAUTH_URL, APP_BASE_URL werden nicht exportiert/importiert
  • Standalone-Script: scripts/export-backup.sh für ältere Versionen ohne API