Changelog
Änderungen & neue Features – neueste Einträge zuerst.
Nächste geplante Features
Kurzfristig
- Input Sanitization in Frontend-Formularen aktivieren
- CSRF-Schutz für Formulare
Mittelfristig
- Infinite Scroll für Gruppen/Events
- Favoriten/Bookmarks Feature
- Performance-Optimierung (ISR Caching)
Langfristig
- E2E Tests mit Playwright
- Error Tracking (Sentry)
- PostgreSQL Migration für Produktion
- CI/CD Pipeline (GitHub Actions)
---
2026-02-20
🗺️ Karte
- Marker-Clustering für Gruppen und Events (bessere Übersicht und Performance)
🧩 Events
- Trust-Hinweise: Adress-/Positions-Check im Event-Formular + Hinweis bei abgelaufenen Events (inkl. Duplizieren-Flow)
🧩 Gruppen
- Tanzstile: `DanceMode` um Option **Beides (BOTH)** erweitert
- Gruppen: Neues optionales Textfeld **Accessoires** (Create/Edit + Anzeige auf Gruppenseite)
🖼️ Uploads
- Upload Limit für Bilder/Flyer auf **15MB** erhöht
- Upload UX: Klarere Fehlermeldungen aus dem Backend werden im UI angezeigt (statt generischem "Upload fehlgeschlagen")
- Upload UX: Hinweistext mit Maximalgröße direkt an den Upload-Feldern (Gruppen-Form, Gruppen-Wizard, Event-Form)
💃 Tanzstile
- Default-Liste ergänzt: **Oriental Fusion** (Seed-Scripts + API Default-Seeding)
🧰 Admin / Transfer
- Transfer-Upload API: Fallback für Raw-Uploads (`application/gzip`/`octet-stream`) zusätzlich zu Multipart
- Tests: Transfer Upload Test an Vitest-Umgebung angepasst
🛍️ Marketplace (Second-Hand Börse)
- Inserate: Create/Detail/Edit/Delete komplett (Owner/Admin Berechtigungen)
- Standort: Geocoding best-effort (keine 500er bei externen Fehlern) + Soft-Warnung bei PLZ/Ort-Mismatch
- Validierung/UX: Pflichtfelder konsistent (Preis: Pflicht bei „Ich biete“, optional bei „Ich suche“), Input-Sanitization (PLZ 5-stellig, Preis/Versand nur Zahlformat)
- Detailansicht: zusätzliche Infos (Datum/Location-Quelle) + Admin/Owner Aktionen
- Legacy-Listings: Standort-Anzeige robust bei älteren Inseraten ohne PLZ/Ort
- Architektur: Marketplace-Übersicht lädt Inserate über `/api/marketplace` (statt Prisma direkt)
💬 Direktnachrichten
- E-Mail Benachrichtigung bei neuer Nachricht: Link führt direkt in den passenden Thread (`/direct-messages/[otherUserId]`)
- Profil: Optionale Einstellung, ob bei neuen Direktnachrichten eine E-Mail gesendet wird
- E-Mail Throttle: Maximal eine Benachrichtigung pro Kontakt alle 10 Minuten (Spam-Schutz)
- E-Mail Links: Deep-Links nutzen `NEXTAUTH_URL` (Fallback: `SITE_URL`) – kein kaputter Button wenn Base-URL fehlt
🧩 UI / UX
- Gruppenliste: Filter UX auf Mobile verbessert
- Oben nur noch Suche + Sortierung
- Tanzstil + Standort/Umkreis im Accordion „Filter“
- Sortierung „Entfernung“: Hinweis + Accordion-Öffnung wenn Standort fehlt
- Tänzerinnen-Übersicht (`/taenzerinnen`): Layout/Filter wie Gruppenübersicht (Suche, Sortierung, Filter)
- Tänzerinnen-Profile: Phase 2 Felder ergänzt (Unterricht + Ort, Schwerpunkte, Ausbildung/Training, Auftritte/Referenzen) + Filter „Unterricht“
- Tänzerinnen-Profile: Workshops + „Für Auftritte buchbar“ + Konditionen (Freitext) + Filter „Workshops“
- Gruppenseite: Öffentliche Sidebar zeigt jetzt Gruppenleitung (Owner + Admins) und Mitgliederliste (erste 12 + „Mehr“)
- User-Profil: Gruppenliste zeigt jetzt Rolle (Mitglied/Gruppenleitung) und Beitrittsdatum
- Neue Hilfeseite `/hilfe` und Link im Footer
🛠️ Wartungsmodus
- Wartungsmodus (MAINTENANCE_MODE) blockiert Schreibzugriffe serverseitig (HTTP 503)
- via `src/proxy.ts` (Next.js 16 Proxy-Konvention)
- Globales Wartungs-Banner
PWA (iOS)
- iOS Home-Screen Icon verbessert
- `apple-touch-icon.png` hinzugefügt
- Manifest um PNG Icons ergänzt
- Favicon/App-Icon: SVG Logo wird zusätzlich als Icon ausgeliefert (neben PNG Fallbacks)
🔧 Deployment / Datenbank
- PostgreSQL-only: SQLite komplett entfernt
- Entfernte Prisma SQLite-Migrations-History (`prisma/migrations` inkl. `migration_lock.toml`)
- Setup/Deploy nutzen `prisma db push`
- Backup/Restore/Auto-Backup via `pg_dump`/`psql`
🧪 Tests
- Playwright E2E: Neuer Test für Inbox-Thread (Edit/Delete bis gelesen)
🔧 Geändert
- Event-Erstellung: Datum/Uhrzeit Eingabe UX überarbeitet (native Date/Time Picker, Safari-kompatibel)
- Event-Formular: Automatisches Setzen der Endzeit (+90 Minuten) solange Ende nicht manuell geändert wurde
- Event-Formular: Beim Bearbeiten wird das Ende beim Verschieben des Starts mitverschoben (inkl. Hinweis)
- Event-Formular: Inline-Validierung + Scroll zum ersten Fehler
- Event-Formular: Zeitzone aus dem Browser wird als Info angezeigt
- Formular-Layout: Ticket-Link/Preis unter Webseite neu angeordnet
SEO
- `robots.txt` und `sitemap.xml` werden jetzt server-seitig generiert (Next.js Metadata Routes)
- Sitemap nutzt bevorzugt `SITE_URL` (Fallback: `NEXTAUTH_URL`) als Basis
- Globales Default-SEO verbessert (Description, OpenGraph, Twitter Cards)
🐛 Behoben
- "Ungültiger Wert" bei Datum/Uhrzeit Eingabe in Safari (Browser-Validation der versteckten Inputs)
- Weiterleitung nach Event-Erstellung für Events ohne Gruppe
- Event löschen: Delete-Button auf Detailseite + API-Route für Events ohne Gruppe
- Öffentliche Seiten: Nicht eingeloggte Nutzer sehen wieder Gruppenlogos/Profilbilder (Uploads werden nicht mehr auf Login umgeleitet)
🎉 Neu hinzugefügt
- Tänzerinnen-Profile: Optional im Nutzerprofil aktivierbar (inkl. Privat-Option) und sichtbar in `/taenzerinnen` + Gruppen-Detailseiten
🎉 Neu hinzugefügt
UX Verbesserungen
- **Toast Notifications System** - Moderne Benachrichtigungen statt Browser-Alerts
- 4 Typen: success, error, warning, info
- Auto-Dismiss nach 5 Sekunden
- Manuelles Schließen möglich
- Integriert in allen Formularen und User-Interaktionen
- **Skeleton Loader** - Loading-Platzhalter für bessere wahrgenommene Performance
- Gruppen-Listenseite (`/groups`)
- Event-Listenseite (`/events`)
- Passt exakt zum finalen Layout (keine Layout-Shifts)
Stabilität & Fehlerbehandlung
- **Error Boundary** - Globale Fehlerbehandlung für React Components
- Zeigt benutzerfreundliche Fehlermeldungen
- Entwickler-Details nur in Development-Modus
- "Seite neu laden" Button
Sicherheit
- **Security Headers** in `next.config.ts`
- X-Frame-Options: SAMEORIGIN
- X-Content-Type-Options: nosniff
- X-XSS-Protection
- Strict-Transport-Security (HSTS)
- Referrer-Policy
- Permissions-Policy
🔧 Geändert
🐛 Behoben
- **Prisma Version-Konflikt** auf Ubuntu 24.04
- `npx prisma` installierte automatisch v7.2.0 (breaking changes)
- Jetzt: `npm run db:generate` und `npm run db:migrate`
- **Alle Browser-Alerts ersetzt**
- 15+ `alert()` Aufrufe durch Toast Notifications ersetzt
- Betrifft: Gruppen, Events, Feed, Karte, Admin-Bereich
📝 Dokumentation
- README.md aktualisiert - Native Installation als Hauptoption
- OPTIMIZATIONS.md aktualisiert - Status aller Features
- Neue npm scripts: `npm run setup`, `npm run deploy`
✅ Validierung
- **Input Sanitization**: Bereits via Zod-Schemas in allen API-Routes implementiert
- **Rate Limiting**: Bereits vorhanden für kritische Endpoints
- **Magic Bytes Validation**: Bereits vorhanden für File-Uploads
---
Allgemein
# Changelog
Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.