Eine App, zwei Sichten auf dieselben Daten: Coach und Athlet arbeiten in derselben Anwendung, sehen aber unterschiedliche Ausschnitte. Der Code ist entsprechend nach Fachbereichen geschnitten, nicht nach Schichten — lib/features/ enthält vierzehn Bereiche von anamnesis über training, nutrition und body bis marketplace, jeder mit eigener Oberfläche, eigenem Zustand und eigenem Datenzugriff.
Die Verbindung zwischen beiden Rollen ist ein eigener Bereich: coach_athlete hält das Betreuungsverhältnis. Daran hängt die Sichtbarkeit — ein Coach sieht die Daten eines Athleten, weil eine Betreuung besteht, nicht weil eine Rolle im Konto steht. Durchgesetzt wird das über Row-Level-Security in PostgreSQL.
Das Backend ist Supabase mit 33 Migrationen. Gesundheitsdaten kommen über Health Connect vom Gerät; die entsprechende Erklärung liegt als Dokument im Repository, weil Google sie für die Veröffentlichung verlangt.