# Leistungstest & UI Modernisierung - Design ## Status - **Draft** - Needs user review - **Date**: 2026-03-23 --- ## Teil 1: Backend Fixes ### Problem 1: Template-Erstellung **Aktuell**: Template wird erstellt, aber Übungen werden in separaten POST-Requests gesendet → Inkonsistenz **Lösung**: Die `create()` Methode im ViewSet sollte Übungen direkt mit dem Template speichern ```python def create(self, request, *args, **kwargs): # 1. Template erstellen # 2. Übungen direkt in derselben Transaktion speichern # 3. Response mit allen Daten zurückgeben ``` ### Problem 2: IDs statt Namen **Ursache**: Frontend zeigt `SelectItem key={id} value={String(id)}` - der `value` ist die ID, aber `SelectValue` zeigt `children` nicht korrekt **Lösung**: Nach dem Speichern der Übungen muss das Template mit `prefetch_related` neu geladen werden, damit `exercise_name` verfügbar ist --- ## Teil 2: UI Modernisierung (Ganze App) ### Design Philosophy: "Elegant & Clean" - Sanfte, subtile Animationen - Professionelles Erscheinungsbild - Fokus auf Lesbarkeit und Benutzerfreundlichkeit - Keine übertriebenen Effekte ### Aktuelle Probleme 1. **Keine Page Transitions** - Seitenwechsel sind abrupt 2. **Statische Hover-Effekte** - Keine sanften Übergänge 3. **Cards ohne Tiefe** - Keine subtilen Schatten oder Glows 4. **Monochrome Icons** - Keine Farbvariation 5. **FadeIn nur auf Hauptelementen** - Inkonsistente Animationen ### Geplante Verbesserungen #### 2.1 Global Page Transitions ```tsx // app/(dashboard)/layout.tsx import { motion, AnimatePresence } from "framer-motion" // Page-Übergänge mit smooth fade + slide {children} ``` #### 2.2 Subtile Card-Hover-Effekte ```tsx // Aktuell // Neu mit motion ``` #### 2.3 Button Micro-Interactions ```tsx // Scale + subtle glow on hover ``` #### 2.4 Staggered List Animations ```tsx // Für Listen und Cards mit verzögertem Erscheinen {items.map(item => ( ))} ``` #### 2.5 Smooth Scrollbar Styling ```css /* Modern scrollbar für Webkit-Browser */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(100, 100, 100, 0.3); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: rgba(100, 100, 100, 0.5); } ``` #### 2.6 Icon Color Transitions ```tsx // Icons mit Farbwechsel bei Hover ``` --- ## Teil 3: Component-Spezifische Änderungen ### 3.1 Sidebar - Hover-State mit sanftem Slide + Farbwechsel - Active-State mit subtle glow/underline - Smooth expand/collapse für Submenüs ### 3.2 Cards (Stat Cards, Data Cards) - Subtle lift bei Hover - Border-color transition - Sanfte Schatten-Verstärkung ### 3.3 Tables - Row hover mit background shift - Smooth row appearance (staggered) - Subtle column highlight ### 3.4 Forms - Input focus mit border-color + subtle glow - Label animation (float label style optional) - Button loading state mit spinner ### 3.5 Tabs - Underline indicator mit smooth slide - Active tab mit subtle scale --- ## Teil 4: Animations-Token ```typescript // lib/animations.ts (neu oder erweitern) export const transitions = { fast: "150ms", normal: "250ms", slow: "400ms", } export const easing = { default: "easeOut", smooth: [0.4, 0, 0.2, 1], // cubic-bezier bounce: [0.68, -0.55, 0.265, 1.55], } export const stagger = { fast: 0.05, normal: 0.1, slow: 0.15, } ``` --- ## Implementation Reihenfolge 1. **Backend Fix** (10 min) - Template create mit embedded exercises - Verify exercise_name wird korrekt zurückgegeben 2. **Animation Library Setup** (5 min) - Framer Motion installieren/verifizieren - Animation tokens definieren 3. **Global Layout** (15 min) - Page transitions in layout.tsx - Smooth scrolling CSS 4. **Sidebar Enhancement** (15 min) - Hover/active animations - Icon transitions 5. **Card Components** (20 min) - Alle Cards mit hover effects - Stat cards auf Dashboard 6. **List/Table Enhancements** (20 min) - Staggered animations - Row hover effects 7. **Form Enhancements** (15 min) - Input focus states - Button micro-interactions 8. **Tab Enhancements** (10 min) - Slide underline indicator --- ## Erfolgskriterien - [ ] Template-Erstellung funktioniert vollständig mit Übungen - [ ] Dropdowns zeigen Namen statt IDs - [ ] Seitenwechsel sind smooth (fade + slide) - [ ] Hover-Effekte auf allen interaktiven Elementen - [ ] Listen appear mit staggered animation - [ ] Keine "jarring" Übergänge - [ ] Performance bleibt gut (nicht zu viele Animationen)