# StreamA2026 Entwicklungsrichtlinie

Diese Richtlinie stellt sicher, dass alle Änderungen konsistent und docker-kompatibel sind.

## Kernprinzipien

- **Docker-First Entwicklung**: Alle Änderungen müssen in Docker-Umgebung getestet werden
- **Flyway-First für Datenbank**: Jede Datenbank-Änderung muss Flyway-Migration haben
- **Holistischer Ansatz**: Projekt wird als ein großes Bundle betrachtet (Backend + Frontend + Infrastruktur)

## Checkliste für Datenbank-Änderungen

Bei jeder Änderung an der Datenbankstruktur:

- [ ] Modelle in `backend/app/models/` erstellen/aktualisieren
- [ ] Schemas in `backend/app/schemas/` erstellen/aktualisieren
- [ ] Neue Modelle in `backend/app/models/__init__.py` importieren
- [ ] Flyway-Migration erstellen: `flyway/sql/V{n}__description.sql`
- [ ] Migration prüfen und manuell anpassen falls nötig
- [ ] Migration testen: `docker compose exec flyway flyway migrate`
- [ ] Baseline-Migration (V1) aktualisieren falls nötig

## Checkliste für API-Änderungen

Bei jeder neuen API-Route oder Änderung:

- [ ] Router in `backend/app/api/` erstellen/aktualisieren
- [ ] Router in `backend/app/api/__init__.py` exportieren
- [ ] Router in `backend/app/main.py` registrieren
- [ ] Auth-Dependencies prüfen (get_current_user, get_current_admin_user, get_current_creator_user, etc.)
- [ ] Frontend-Service in `frontend/src/services/` erstellen/aktualisieren
- [ ] Frontend-Components erstellen/aktualisieren

## Checkliste für Docker

Bei jeder Infrastruktur-Änderung:

- [ ] docker-compose.yml prüfen bei neuen Services
- [ ] Environment-Variablen in .env.example hinzufügen
- [ ] Dockerfile prüfen bei neuen Dependencies
- [ ] Volume-Mounts prüfen bei neuen Pfaden
- [ ] Ports prüfen bei neuen Services

## Rollen-System

Das Projekt verwendet folgende Rollen:

- **user**: Standard-Benutzer mit Lesezugriff
- **mod**: Moderator mit Kommentarmoderation (kein Stream-Zugriff)
- **subscriber**: Abonnent (für zukünftige Twitch-Integration)
- **creator**: Content-Creator mit Stream-Management (eigene Streams)
- **admin**: Administrator mit vollständigen Rechten

## Twitch-Integration

Die Twitch-Integration ist vorbereitet aber nicht aktiviert:

- Struktur ist vorhanden (`twitch_oauth` Tabelle, TwitchAuthService)
- Endpoints sind deaktiviert (503 bis Credentials konfiguriert)
- Environment-Variablen: `TWITCH_CLIENT_ID`, `TWITCH_CLIENT_SECRET`, `TWITCH_REDIRECT_URI`

## Watch-Verläufe

Watch-Verläufe werden serverseitig gespeichert:

- Tabelle: `watch_history`
- Speichert: user_id, stream_id, last_position_seconds, completed
- Frontend sendet Position alle 30 Sekunden oder bei Pause
- Benutzer können ihre Verläufe einsehen und löschen
