Initial commit: Docker infrastructure for fullstack Vollversammlung app

This commit is contained in:
2026-06-28 15:37:48 +02:00
commit 2960855bca
21 changed files with 1434 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# Backend-Coder (Phase 2)
## Rolle
Zuständig für Symfony Boilerplate, Domain-Schichten nach Provider/Processor-Pattern, CRUD-Controller und OAuth-Integration (Vonova).
## Aufgaben — Struktur
Die Codebasis folgt der in `Doku/architektur.md` definierten Dreier-Schichten-Architektur:
- `UI/{Client}/{Feature}/` Controller, Request DTOs, Response DTOs
- `Logic/{Feature}/` Manager, Calculator, Model, Provider/Processor Interfaces, Shared
- `Data/{Feature}/` Doctrine Entities, Repository-Interfaces und Implementierungen
- `Shared/` Entitätsübergreifende Basisklassen (`BaseEntity`, `UuidGenerator`)
## Aufgaben — Logic-Schicht (Provider & Processor)
- **Entities** nach `Doku/plan.md` als Doctrine Entity-Attribute implementieren
- **Repository-Schicht**: Alle Queries über den SQL Builder Trait mit Mandant-Scoping implizit, keine expliziten Filter im Provider
- **Provider** (`*ProviderInterface`): Lesender Zugriff auf Data-Schicht; Mappen von Entities → Models über separate Mapper-Klassen in `Data/`
- **Processor** (`*ProcessorInterface`): Schreibende Prozesse; gleichen Mapper-Pattern für Models → Entities nutzen
- **Manager**: Cache, Workflow, Aggregate pro Use-Case
- **Calculator**: Berechnungen (Statistiken)
## Aufgaben — UI-Schicht
- **Feature-Namenskonvention**: PascalCase auf Deutsch (`Veranstaltungen`, `Personen`, `Anwesenheit`)
- Beispiel-Pfad: `UI/API/Veranstaltungsmanagement/Controller/VeranstaltungsmanagementController.php`
- **REST-Endpunkte** unter `/api/*` mit request/response DTOs
- Validierung auf Request-Level (DTO-Attribute)
## Aufgaben — OAuth & Infrastruktur
- Vonova OAuth-Flow implementieren (Login / Callback / Token Handling)
- JWT/Session Handhabung (HttpOnly, Secure, SameSite=lax Cookies)
- Mandantenisolation via Auth-Token validieren und an Mandanten-Scoping durchreichen
- Mercure als Logging-Transport einrichten
## Kontext
- Projekt: Veranstaltungs-Tool mit Symfony Backend, React Frontend
- OAuth-Anbieter: Vonova
- Datenbank: PostgreSQL (Multi-Tenant-fähig erforderlich)
- Auth: JWT/Session-basiert nach OAuth-Flow
- Architektur-Konventionen: `Doku/architektur.md`
## Regeln & Konventionen
- Feature-Namen sind PascalCase auf Deutsch, use-case-basiert (zB `Veranstaltungen`, nicht `Events`)
- Alle Controller müssen PSR-12 konform sein
- Doctrine Entities müssen vollständig als Attribute annotiert sein
- Validierungsregeln pro Feld
- Provider/Processor-Pattern strikt einhalten keine DB-Zugriffe in Controllern
- Mandant-Scoping ausschließlich über SQL Builder Trait manuelle WHERE-Klauseln in Repositories nicht erlaubt
- Request/Response DTOs für alle API-Endpunkte verwenden
## Erwartete Deliverables
- Symfony Boilerplate nach `Doku/architektur.md` Struktur
- Entities, Repository-Interface + Implementierung (mit Scalar Builder Traits)
- Provider/Processor-Schicht pro Feature
- CRUD-Controller mit Request/Response DTOs (REST `/api/*`)
- Vonova OAuth Integration
- Login, Callback, Token Handling
- JWT/Session Handhabung
- Mercure Logging-Anbindung