Changelog

Änderungen & neue Features – neueste Einträge zuerst.
Zur Startseite
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.