Privacy-first Readiness-SaaS für den Frauenfußball. Spielerinnen loggen ihr Wohlbefinden & ihren Zyklus in unter 30 Sekunden — Trainer sehen nie die Rohdaten, nur eine handlungsfähige Ampel.
Menstruationszyklen beeinflussen Leistung, Verletzungsrisiko und Regenerationsbedarf messbar — trotzdem wird das Thema im Trainingsalltag von Frauenteams kaum systematisch erfasst. Der Grund ist selten Desinteresse, sondern Datenschutz: Niemand will, dass Trainer Zugriff auf intime Gesundheitsdaten haben. Bestehende Tracking-Apps sind entweder Consumer-Zyklus-Apps ohne Team-Anbindung, oder generische Athletik-Tools ohne Sensibilität für Art.-9-Daten.
CyclesGuard löst genau diese Lücke: ein Zero-Knowledge-Layer zwischen Spielerin und Trainerstab, der aus privaten Tages-Logs eine einfache, sportlich formulierte Handlungsempfehlung macht — ohne dass eine einzige Rohinformation den Trainer erreicht.
Spielerin CyclesGuard (Server) Trainer / Club-Admin
────────── ───────────────────── ────────────────────
Tages-Log ─────▶ Verschlüsselte Speicherung
(Energie, + serverseitige Aggregation ─────▶ Ampel: FIT · MODIFIED
Symptome, (Row Level Security DENY REST · NO_DATA
Zyklusphase) für Trainer-Rolle auf + kurze Trainingshinweis
`cycle_logs`) (nie Phase/Symptome/Notizen)
Durchgesetzt wird das nicht per Konvention, sondern technisch: PostgreSQL Row Level Security verweigert der Trainer-Rolle jeden Lesezugriff auf die Rohtabelle. Die Aggregation läuft ausschließlich serverseitig mit geprüfter Autorisierung — es gibt keinen API-Pfad, über den Rohdaten das Frontend eines Trainers erreichen können.
| Für | Was |
|---|---|
| 🏃 Spielerin | <30s Tages-Log, 28-Tage-Historie, Offline/PWA-Sync, Push-Erinnerungen, DSGVO-Export & Account-Löschung |
| 🧑🏫 Trainer | Team-Ampel (FIT / MODIFIED / REST / NO_DATA), Last-Hinweise, 7-Tage-Trend, Teilen für die Kabine |
| 🏟️ Club-Admin | Roster-Invite (CSV-Bulk mit Vorschau), Saison-/Vertragsverwaltung, Adherence-Scorecard — keine Gesundheits-Rohdaten |
| 🔒 Privacy Engineering | Row Level Security DENY auf cycle_logs, serverseitige Maskierung, gehashte Consent-Audit-IPs, Zero-Knowledge-Aggregation |
| 📡 GPS-Bridge (optional, Pilot+) | Eigener Spring-Boot-Ingestion-Service mit HMAC-Auth, Outbox-Queue, Datenbereinigung — komplett getrennt von Zyklusdaten |
| Layer | Technologie |
|---|---|
| Frontend | Next.js 14 (App Router), TypeScript, Tailwind CSS, Framer Motion |
| PWA / Offline | Serwist Service Worker, IndexedDB Outbox-Sync, Web Push (VAPID) |
| Backend / Auth | Supabase (Postgres, Auth, Row Level Security) |
| Validation | Zod |
| GPS-Ingestion | Spring Boot 3.3, Java 21, Flyway, PostgreSQL |
| Monitoring | Sentry (EU, Health-Payloads serverseitig gestrippt) |
| Hosting | Vercel (fra1, EU-Edge), Supabase Frankfurt |
| Testing | node:test (Unit), Playwright (E2E), GitHub Actions CI |
| Pfad | Rolle |
|---|---|
cyclesguard-frontend/ |
Player / Trainer / Club-Admin App (Next.js PWA) |
cyclesguard-ingestion/ |
GPS-Telemetrie-Bridge (Spring Boot, optional ab Pilot) |
docs/ |
Roadmap, Pitch-Pack, Datenschutz-Dokumentation |
cd cyclesguard-frontend
cp .env.example .env.local # oder: npm run pitch:setup-env
# Supabase-Keys eintragen — siehe docs/pitch/SUPABASE-SETUP.md
npm install
npm run seed:demo # nach den Migrationen auf Supabase
npm run devDemo-Logins zum Reinklicken: docs/pitch/DEMO-ACCOUNTS.md · Kompletter Ablauf: docs/pitch/DEMO-SCRIPT.md
Pitch-Ready → Soft-Pilot → Paid SaaS
(jetzt) nach Club-Zusage nach Pilot-Erfolg
| Stage | Ziel | Gate |
|---|---|---|
| Pitch-Ready | Live-Demo, Datenschutz-Pack, Pilotangebot | ✅ erreicht |
| Soft-Pilot | 5–10 freiwillige Spielerinnen, 8–12 Wochen, wöchentliches Feedback | Club-Zusage |
| Paid SaaS | Multi-Club, Verträge, Billing, GPS optional | Pilot-Erfolgsmetriken |
Vollständiger Plan: docs/sprints/00-ROADMAP.md · SaaS-Sicht: docs/product/SAAS-PLAN.md
- Trainer sehen ausschließlich
FIT | MODIFIED_TRAINING | REST | NO_DATA(+ Last-Hinweise) - Keine Zyklusphase, Symptome oder Freitext-Notizen in Trainer-UI oder Push-Payloads
- DSGVO Art. 9 Einwilligung, Datenexport (Art. 15/20), Löschung (Art. 17)
- EU-Hosting durchgängig (Supabase Frankfurt, Vercel
fra1) - Automatisierte Produktions-Checks:
npm run verify:prodprüft Env, RLS-Status und führt einen Zero-Knowledge-Audit-Test gegencycle_logsaus
Details: docs/pitch/DATENSCHUTZ-DOSB-1-PAGER.md · AVV-Entwurf: docs/privacy/AVV-TOM-DRAFT.md
- Dieses Repo auf Vercel importieren
- Root Directory:
cyclesguard-frontend - Env-Variablen: siehe
docs/pitch/DEPLOY.md - Supabase Auth Site URL +
/auth/callbacksetzen - Smoke-Test:
npm run pitch:smoke -- https://<deine-url>
GitHub Actions (.github/workflows/ci.yml): Frontend-Tests + Build (Next.js), Ingestion-Tests (Maven). Läuft auf jedem Push/PR gegen main.
CyclesGuard sucht ambitionierte Vereine für einen kostenlosen 8–12-Wochen-Soft-Pilot (5–10 freiwillige Spielerinnen, kein Stripe, kein GPS-Zwang). Interesse? cyclesguard@proton.me oder direkt über die Live-Demo.
