### ⚙️ Backend: Django & REST API *Das Fundament für Sicherheit, Datenstruktur und Exporte.* #### Core & Infrastruktur * **Python:** Die Programmiersprache. * **Django:** Das Web-Framework (Batteries included). * **PostgreSQL:** Die Datenbank (zuverlässig und performant für komplexe Datenrelationen). * **django-environ:** Für die sichere Trennung von Zugangsdaten (Secret Keys, DB-Passwörter) vom Code. * **gunicorn** & **whitenoise:** Notwendig für den stabilen Betrieb (Deployment) auf einem Server. #### API & Authentifizierung * **djangorestframework (DRF):** Macht aus Django eine leistungsfähige REST API. * **django-cors-headers:** Erlaubt deinem Next.js-Frontend, sicher mit dem Backend zu kommunizieren. * **djangorestframework-simplejwt:** Schützt die API-Endpunkte, damit nur eingeloggte Trainer/Admins Daten sehen können. * **drf-spectacular:** Generiert automatisch eine Swagger-Dokumentation. Das Frontend weiß so immer exakt, wie die Datenstruktur aussieht. #### Daten-Handling & Features * **django-filter:** Ermöglicht es, Ringer nach Club, Gruppe oder Anwesenheit über die API zu filtern. * **django-import-export:** Ermöglicht dir, Ringer-Listen oder Trainings-Statistiken direkt im Admin-Bereich als **CSV oder PDF** zu exportieren. #### Medien & Bilder (Ringerpässe, Fotos) * **Pillow:** Basis-Bibliothek für Bildverarbeitung in Python. * **django-resized:** Zwingt hochgeladene Fotos automatisch auf eine vordefinierte Größe, um Speicherplatz zu sparen und Ladezeiten zu verkürzen. * **django-cleanup:** Löscht automatisch alte Bilddateien vom Server, wenn ein Ringer-Profil gelöscht oder das Foto geändert wird. #### Admin-Oberfläche ("Geiles Design" für Trainer) * **django-unfold:** Verwandelt das standardmäßige, altbackene Django-Admin in ein modernes, responsives Interface im Material Design. Da Trainer hier arbeiten, ist das essenziell. --- ### 🎨 Frontend: Next.js & UI *Die Oberfläche für schnelle Navigation, Filter und flüssige Animationen.* #### Core & Infrastruktur * **Node.js:** Die Laufzeitumgebung. * **Next.js (mit TypeScript):** Das React-Framework für Performance und Typsicherheit. Wir nutzen den modernen **App Router**. #### UI, Styling & Animationen * **Tailwind CSS:** Utility-First CSS-Framework für extrem schnelles und konsistentes Design. * **shadcn/ui:** Die Komponenten-Bibliothek (Daten-Tabellen, Dialoge, Formulare), die perfekt aussieht und auf Tailwind basiert. * **Framer Motion:** Für die "geilen Animationen". Hiermit steuern wir weiche Übergänge, aufklappende Elemente und Status-Änderungen. * **lucide-react:** Ein Icon-Set, das modern und konsistent wirkt. #### Datenmanagement & Kommunikation * **axios:** Der HTTP-Client für die API-Aufrufe an Django. * **@tanstack/react-query:** Das wichtigste Tool für Performance. Es cached die Daten im Frontend. Wenn ein Trainer filtert oder zwischen Listen-/Kalenderansicht wechselt, sind die Daten **sofort** ohne Ladezeit da. * **zustand:** Ein leichtgewichtiger State-Manager, um globale Einstellungen (z.B. den aktuell ausgewählten Club) seitenübergreifend zu speichern. #### Formulare & Validierung * **react-hook-form:** Veraltet performante Formulare (z.B. beim Erstellen von Übungen oder Trainingsvorlagen). * **zod:** Validiert die Eingaben im Formular, noch bevor sie ans Backend geschickt werden (z.B. "Gewicht muss eine Zahl sein"). #### Spezifische Features * **@fullcalendar/react:** Für den Wechsel zwischen Kalender- und Listenansicht. * **recharts:** Um die Statistiken auf der Reports-Seite schön darzustellen (z.B. Anwesenheits-Kurven). --- ## 🔗 Feature-to-Tech Map Hier siehst du, wie deine Wünsche konkret technisch umgesetzt werden: | Deine Anforderung | Technische Umsetzung (Backend/Frontend) | | :--- | :--- | | Ringerpässe scannen & Fotos | Django: `Pillow`, `django-resized`, `cleanup` / Next.js: HTML5 Camera API | | Gewichtshistorie, Geburtstage | Django: Models mit `Date` & `DecimalField` / Next.js: Formulare & Recharts (für Kurven) | | Trainingsvorlagen (modular) | Django: Komplexe Database Relations (`ForeignKey`, `ManyToManyField`) | | Kalender/Liste Switch | Django: API liefert Daten / Next.js: `@fullcalendar/react` + State Switch | | Filtern auf allen Seiten | Django: `django-filter` & REST API / Next.js: `tanstack/react-query` & URL Params | | Hausaufgaben Status | Django: Model mit Status-Feld / Next.js: shadcn/ui Checkboxen & API-Update | | "Geile Animationen" | Next.js: `framer-motion` für alle Übergänge | | CSV/PDF Export | Django: `django-import-export` (Backend-generiert für Stabilität) | | Dashboard (keine Pers. Daten) | Django: Separater Public-API Endpunkt / Next.js: Eigene Dashboard-Page |