Motivation
Aktuell ist die Plattform auf einzelne User ausgerichtet. In der Praxis gibt es jedoch Familien oder Kollektive, die gemeinsam Dashcam-Material sammeln und einreichen möchten.
Beispiel-Szenario:
- Papa und Mama haben beide Dashcams in ihren Autos
- Beide sammeln Material für die gleiche "Marke" (z. B. "Familie Müller")
- Sie wollen:
- Separate Logins mit eigenen Credentials (Security, MFA, Activity-Tracking)
- Gemeinsamen Pool an Videos (beide sehen/verwalten alle Team-Videos)
- Konsistenten Einsender-Namen gegenüber Channels
Ziel ist es, Team-Collaboration zu ermöglichen, ohne dass Accounts geteilt werden müssen.
Zielsetzung
Implementierung eines Multi-Tenant-Team-Systems basierend auf Filament Teams/Tenancy, das:
- User erlaubt, Teams zu erstellen und andere einzuladen
- Jedem User eigene Credentials, MFA und Activity-Tracking gewährt
- Teams optional einen gemeinsamen Display-Namen für alle Mitglieder bereitstellt
- Channels eine konsistente Einsender-Identität zeigt (unabhängig davon, wer im Team hochgeladen hat)
Problem
Ohne Teams:
- Familien müssten einen Account teilen (unsicher, keine individuelle Accountability)
- Oder separate Accounts führen (Channels sehen "Papa Müller", "Mama Müller" → verwirrend)
- Keine zentrale Verwaltung gemeinsamer Videos
Mit Teams:
- Jeder hat eigene Credentials ✅
- Gemeinsamer Video-Pool ✅
- Konsistente öffentliche Identität ✅
Aktueller Stand (V3.0.0)
Foundation bereits vorhanden:
submitted_name auf User-Level (optional)
- Fallback-Chain:
submitted_name ?? name
- Multi-User-Support mit Roles & Permissions
Fehlend:
- Team-Konzept (Filament Tenancy)
- Einladungs-System
- Team-basierte Display-Name-Logik
Anforderungen
🎯 Must Have
Team-Management
Display-Name-Logik
$displayName = ($user->hasTeam() && $user->team->use_shared_name)
? $user->team->display_name
: ($user->submitted_name ?? $user->name);
Video-Ownership
Permissions
💡 Nice to Have
Technische Überlegungen
Filament Tenancy Integration
- Nutzung von Filament's Team/Tenancy-Features
- Migration bestehender User-Videos zu "Personal Teams"
- Tenant-Scope für Queries (automatisches Filtern nach Team)
Datenmodell
teams:
- id
- name (intern, z. B. "Familie Müller Team")
- display_name (öffentlich, z. B. "Familie Müller")
- use_shared_name (boolean, default: true)
- owner_id (foreign key → users)
- created_at, updated_at
team_user (Pivot):
- team_id
- user_id
- role (owner|member)
- joined_at
users:
- current_team_id (nullable, foreign key → teams)
- submitted_name (nullable, optional override)
videos:
- team_id (foreign key → teams, nullable für Migration)
- uploaded_by (foreign key → users, für Activity-Log)
Migration-Strategie
- Bestehende User bekommen automatisch "Personal Team" (Name = User's Name)
- Bestehende Videos werden ihrem User's Personal Team zugewiesen
- Backward-kompatibel: Display-Name-Logic funktioniert mit und ohne Teams
Display-Name in verschiedenen Contexts
- info.csv:
submitter Spalte nutzt Team-Display-Name
- Clip Model:
submitted_by Attribut zeigt Team-Display-Name
- Channel-Mails: "Neue Videos von [Team-Display-Name]"
- Admin-Panel: Zeigt Team-Name + individueller Uploader
User Stories
Story 1: Familie erstellt Team
Als Papa (Dashcam-Enthusiast)
möchte ich ein Team "Familie Müller" erstellen und Mama einladen
damit wir beide Material hochladen können, aber Channels nur "Familie Müller" sehen
Akzeptanzkriterien:
Story 2: WG nutzt individuelle Namen
Als Mitglied einer Dashcam-WG
möchte ich im Team sein für gemeinsame Verwaltung, aber meinen eigenen Namen als Einsender behalten
damit Channels wissen, wer welches Material geliefert hat
Akzeptanzkriterien:
Story 3: Migration bestehender User
Als bestehender Solo-User
möchte ich nach dem Upgrade auf V4 weiterhin wie gewohnt arbeiten
damit keine Breaking Changes meine Workflows unterbrechen
Akzeptanzkriterien:
Akzeptanzkriterien
Team-Erstellung & Verwaltung
Display-Name-Logic
Video-Ownership & Permissions
Migration & Backward-Compatibility
Testing
Priorität
🟡 Mittel – Foundation ist vorhanden (V3), aber Feature ist wichtig für Multi-User-Skalierung
Zielversion
v4.0 (Major Release - Breaking Changes durch Tenancy-Migration)
Abhängigkeiten
- V3.0.0 muss released sein (Roles & Permissions, submitted_name-Logic)
- Filament Tenancy-Package evaluieren/integrieren
- Migration-Strategie für bestehende Videos/User
Referenzen
Offene Fragen
Motivation
Aktuell ist die Plattform auf einzelne User ausgerichtet. In der Praxis gibt es jedoch Familien oder Kollektive, die gemeinsam Dashcam-Material sammeln und einreichen möchten.
Beispiel-Szenario:
Ziel ist es, Team-Collaboration zu ermöglichen, ohne dass Accounts geteilt werden müssen.
Zielsetzung
Implementierung eines Multi-Tenant-Team-Systems basierend auf Filament Teams/Tenancy, das:
Problem
Ohne Teams:
Mit Teams:
Aktueller Stand (V3.0.0)
Foundation bereits vorhanden:
submitted_nameauf User-Level (optional)submitted_name ?? nameFehlend:
Anforderungen
🎯 Must Have
Team-Management
Display-Name-Logik
use_shared_name(Boolean, Default:true)display_name(String, z. B. "Familie Müller")info.csv, Clip-Metadaten, Channel-Communications verwendetVideo-Ownership
Permissions
💡 Nice to Have
Technische Überlegungen
Filament Tenancy Integration
Datenmodell
Migration-Strategie
Display-Name in verschiedenen Contexts
submitterSpalte nutzt Team-Display-Namesubmitted_byAttribut zeigt Team-Display-NameUser Stories
Story 1: Familie erstellt Team
Als Papa (Dashcam-Enthusiast)
möchte ich ein Team "Familie Müller" erstellen und Mama einladen
damit wir beide Material hochladen können, aber Channels nur "Familie Müller" sehen
Akzeptanzkriterien:
Story 2: WG nutzt individuelle Namen
Als Mitglied einer Dashcam-WG
möchte ich im Team sein für gemeinsame Verwaltung, aber meinen eigenen Namen als Einsender behalten
damit Channels wissen, wer welches Material geliefert hat
Akzeptanzkriterien:
use_shared_namewird auffalsegesetztStory 3: Migration bestehender User
Als bestehender Solo-User
möchte ich nach dem Upgrade auf V4 weiterhin wie gewohnt arbeiten
damit keine Breaking Changes meine Workflows unterbrechen
Akzeptanzkriterien:
submitted_name ?? nameAkzeptanzkriterien
Team-Erstellung & Verwaltung
use_shared_nameSetting toggleDisplay-Name-Logic
use_shared_name = true→ alle Mitglieder zeigen Team-Display-Nameuse_shared_name = false→ jedes Mitglied zeigt eigenen submitted_name/nameVideo-Ownership & Permissions
Migration & Backward-Compatibility
Testing
Priorität
🟡 Mittel – Foundation ist vorhanden (V3), aber Feature ist wichtig für Multi-User-Skalierung
Zielversion
v4.0(Major Release - Breaking Changes durch Tenancy-Migration)Abhängigkeiten
Referenzen
submitted_name-Logic in User ModelOffene Fragen