Replaces the generic AI-coding-starter-kit boilerplate (PROJ-1/PROJ-2 placeholder examples) with what the portal actually does, sourced from the deployed feature specs and PRD. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.9 KiB
TalkTime
Selbst hostbare, DSGVO-freundliche Kommunikations- und Verwaltungsplattform für Sportvereine — Ersatz für WhatsApp-Gruppen. Matrix/Synapse läuft im Hintergrund als Messaging-Backend; der Verein verwaltet stattdessen Abteilungen, Mannschaften, Mitglieder und Rollen. Kommunikationsgruppen entstehen automatisch aus dieser Struktur.
Was das Portal kann
Für Vereine (CLUB_ADMIN, Trainer, Mitglieder):
- Login & Sessions — eigenes E-Mail/Passwort-Login mit JWT, kein Drittanbieter nötig
- Verein anlegen — eigene Organisation (Tenant) samt Vereinsadministrator; ein Nutzer kann Mitglied in mehreren Vereinen sein und zwischen ihnen wechseln
- Mitgliederverwaltung — Liste, Status setzen (aktiv/gesperrt/ausgetreten), hartes Löschen; Statusänderung sperrt sofort den API-Zugriff, nicht nur das Matrix-Konto
- Abteilungen & Mannschaften — Abteilungen (z.B. Fußball, Handball) mit Mannschaften pro Saison darunter
- Rollen & Berechtigungen — CLUB_ADMIN, Trainer, Co-Trainer, Betreuer, Mitglied, mit Rechten pro Verein/Mannschaft
- Einladungssystem — Mitglieder per Link einladen, ganz ohne Telefonnummer (DSGVO-Ziel statt WhatsApp-Kontaktabgleich)
- Audit-Log — Rollenänderungen, Mitgliederstatus, Einladungen werden pro Verein protokolliert
- Chat — eigene Oberfläche pro Team-Raum über die Matrix Client-Server API; Nutzer sehen nie ein eigenes Matrix-Passwort (Text-only im MVP, kein Medien-Upload/Push)
Automatisch im Hintergrund (Synapse-Integration):
- Health-Check der Synapse-Instanz
- Matrix-User wird bei Einladungsannahme automatisch angelegt
- Team-Räume werden automatisch erstellt und mit den passenden Mitgliedern befüllt
- Mitgliederstatus-Sync über eine Outbox-Queue mit Retry/Backoff, plus periodische Reconciliation gegen Synapse
Für Plattform-Betreiber (SYSTEM_ADMIN, vereinsübergreifend):
- Plattformweite Admin-Rolle, unabhängig von jeder Vereinsmitgliedschaft (DB-only vergeben, kein UI)
- Synapse-Raum-Übersicht über alle Vereine
- Media-Cleanup (verwaiste Dateien/Media-Cache manuell aufräumen)
- Federation-Status-Ansicht (zeigt, dass/ob mit externen Matrix-Servern föderiert wird — Federation ist standardmäßig deaktiviert)
Geplant, noch nicht gebaut: automatische Löschfrist für ausgetretene Mitglieder (DSGVO), Nachricht melden im Chat, Reports/Moderation für SYSTEM_ADMIN. Siehe features/INDEX.md für den aktuellen Stand aller Features.
Bewusst nicht geplant: Vereinsbuchhaltung/Beitragsverwaltung, Turnierverwaltung, Trainingsplanung, KI-Assistent, Videokonferenzen, eigene Mobile-App. Details siehe docs/PRD.md.
Dokumentation
- docs/PRD.md — Produktvision, Zielgruppen, Roadmap
- docs/vereinschat/PRD.md und docs/vereinschat/architecture.md — ausführliche PRD + Architektur
- features/INDEX.md — Feature-Tracking mit Status
- CLAUDE.md — Tech-Stack, Konventionen, Entwicklungs-Workflow (Skills
/requirements,/architecture,/frontend,/backend,/qa,/deploy)
Lokal starten
cd frontend && npm install && cd ..
cd backend && npm install && cd ..
- PostgreSQL-Datenbank + Rolle anlegen
backend/.env.examplenachbackend/.envkopieren, Werte setzen (DATABASE_URL,JWT_SECRET, Synapse-Admin-Token etc.)cd backend && npm run db:generate && npm run db:migrate
cd backend && npm run dev # localhost:4000
cd frontend && npm run dev # localhost:5173, proxied /api zum Backend
Für eine lokale Synapse-Instanz siehe synapse/ (docker-compose.yml, install.sh, homeserver.yaml.sample).
Deployment
Produktivbetrieb via git pull + rsync + systemd auf einem selbst verwalteten Linux-Server (kein Vendor-Lock-in) — siehe /deploy-Skill (.claude/skills/deploy/) und docs/deployment.md.
Lizenz
MIT License