Files
talktime/README.md
T
patrickandClaude Sonnet 5 605386786e docs: rewrite README with actual TalkTime feature overview
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>
2026-09-18 01:28:41 +02:00

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

Lokal starten

cd frontend && npm install && cd ..
cd backend && npm install && cd ..
  1. PostgreSQL-Datenbank + Rolle anlegen
  2. backend/.env.example nach backend/.env kopieren, Werte setzen (DATABASE_URL, JWT_SECRET, Synapse-Admin-Token etc.)
  3. 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