diff --git a/offene-fragen.md b/offene-fragen.md index 84df499..0bbb60b 100644 --- a/offene-fragen.md +++ b/offene-fragen.md @@ -13,253 +13,467 @@ ## 1. Level- & EXP-System (größte offene Lücke) ### Fragen -- Wie genau wird **EXP** vergeben? Pro Wiederholung, pro Satz, pro Einheit, pro Übung? -- Wie viel EXP erhält eine bestandenene Einheit — pro Tier unterschiedlich? -- Bonus-EXP für saubere Ausführung, vollständige Sätze, Max-Rep? -- EXP bei Nichtbestehen — Trost-EXP oder 0? -- Level bei Tier-Wechsel: erhalten, relativ (%) oder absolut? -- Level-Cap pro Tier? -- Skaliert EXP mit Tier? + +* Wie genau wird **EXP** vergeben? Pro Wiederholung, pro Satz, pro Einheit, pro Übung? +* Wie viel EXP erhält eine bestandenene Einheit — pro Tier unterschiedlich? +* Bonus-EXP für saubere Ausführung, vollständige Sätze, Max-Rep? +* EXP bei Nichtbestehen — Trost-EXP oder 0? +* Level bei Tier-Wechsel: erhalten, relativ (%) oder absolut? +* Level-Cap pro Tier? +* Skaliert EXP mit Tier? ### Antwort-Empfehlungen -- ✅ pro ausgeführter wiederholung gibt es exp - - keine multiplikatoren für höhrere tiers - höhere tiers brauchen aber mehr exp pro aufstieg - - Max-Rep gibt mehr exp als satzwiederholungen -- ✅ bonus gibt es entsprechend dem tier wenn ein satz vollständig beendet wurde -- ✅ keine trost-exp -- ✅ jedes tier beginnt bei lv 0 -- ✅ jedes tier hat lv-cap -- ✅ **Level-Cap pro Tier**: Beginner 25, Fortgeschritten 50, Pro ∞ -- ⚠️ selbe menge exp pro tier nur die aufstiege brauchen mehr exp pro level + +* ✅ **Normale Wiederholung = 1 EXP** +* ✅ **Max-Rep-Wiederholung = 2 EXP** +* ✅ Bonus für einen vollständig abgeschlossenen Satz: + + * Beginner: `+5 EXP` + * Fortgeschritten: `+10 EXP` + * Pro: `+15 EXP` +* ✅ Auch bei einer nicht bestandenen Einheit bleiben die EXP der tatsächlich ausgeführten Wiederholungen erhalten. +* ✅ Bei einer nicht bestandenen Einheit gibt es **keine Abschluss-EXP**. +* ✅ Die Einheit zählt bei Nichtbestehen nicht als Fortschritt und muss erneut absolviert werden. +* ✅ Jedes Tier beginnt bei **Level 0**. +* ✅ **Level-Cap pro Tier**: Beginner 25, Fortgeschritten 50, Pro ∞ +* ✅ EXP pro Wiederholung bleibt in allen Tiers gleich. +* ✅ Höhere Tiers benötigen mehr EXP pro Levelaufstieg. +* ⚠️ Konkrete EXP-Kurve / benötigte EXP pro Level noch offen. ## 2. Tier-System & Tier-Wechsel ### Fragen -- Wie wird das Tier bestimmt? (automatisch oder manuell) -- Wann wird Aufstieg freigeschaltet? (EXP-Schwelle, Einheiten, Max-Rep, …) -- Kann ein Tier übersprungen werden? -- Ist „Pro" Endgame oder gibt es „Pro+"? -- Wie wird Tier-Wechsel sichtbar gemacht? + +* Wie wird das Tier bestimmt? (automatisch oder manuell) +* Wann wird Aufstieg freigeschaltet? (EXP-Schwelle, Einheiten, Max-Rep, …) +* Kann ein Tier übersprungen werden? +* Ist „Pro" Endgame oder gibt es „Pro+"? +* Wie wird Tier-Wechsel sichtbar gemacht? ### Antwort-Empfehlungen -- ✅ **Manuelle Wahl** mit Empfehlung: App schlägt Tier basierend auf `Aktivitätslevel` + erstem Kalibrierungs-Ergebnis vor, User bestätigt oder ändert - ok -- ✅ **Freischaltung**: Tier-Aufstieg wird freigeschaltet wenn + +* ✅ **Manuelle Wahl mit Empfehlung**: App schlägt Tier basierend auf `Aktivitätslevel` + Kalibrierung / erster Bewegungserfassung vor, User bestätigt oder ändert. +* ✅ Tier-Reihenfolge: **Beginner → Fortgeschritten → Pro** +* ✅ **Freischaltung**: Tier-Aufstieg wird freigeschaltet wenn + 1. alle 13 Einheiten des aktuellen Tiers bestanden UND 2. Level-Cap des aktuellen Tiers erreicht UND - 3. Max-Rep bei mind. 3 der letzten 5 Einheiten über Schwellwert (Tier-spezifisch) -- ✅ **Kein Überspringen** (verhindert Überforderung, klare Progressions-Linie) -- ✅ **„Pro" = Endgame für v1.0**. Spätere Erweiterung als Tier 4 ("Pro+" / "Elite") in v2.x — nicht im MVP -- ✅ **Tier-Wechsel-Anzeige**: Popup + Animation + Farbwechsel der Übungs-Karte (sanfter Übergang von Rot → Orange → tieferes Rot für Liegestütze z. B.) -- 💬 Schwellwert für Max-Rep-Freischaltung: Vorschlag `Max-Rep ≥ 1.5 × Beginner-Last der gleichen Einheit`. Beispiel Kniebeugen Einheit 1 Pro: 20, Schwelle = 30 Wiederholungen. + 3. übungsspezifischer Max-Rep-Zielwert bei mind. 3 der letzten 5 Einheiten erreicht wurde. +* ✅ **Kein Überspringen** von Tiers. +* ✅ **„Pro" = Endgame für v1.0**. +* ✅ Tier-Wechsel erfolgt **nicht automatisch**. +* ✅ App zeigt **„Tier-Up verfügbar“**, User entscheidet selbst über den Wechsel. +* ✅ Max-Rep-Zielwerte werden pro Übung und Tier separat definiert. +* ⚠️ Konkrete Max-Rep-Zielwerte pro Übung / Tier noch offen. +* ⚠️ Konkrete visuelle Darstellung des Tier-Ups noch offen. ## 3. Kalibrierung ### Fragen -- Was genau misst der Gyrosensor? (Amplitude, Beschleunigungsspitzen, Winkel, Kombi) -- Wie viele Referenzwiederholungen für saubere Kalibrierung? -- Re-Kalibrierung wann möglich? -- Verhalten bei Fehlschlag der Kalibrierung? -- Mehrere Kalibrierungen pro Profil/Übung speichern? -- Kalibrierung pro Übung oder pro Bewegungsrichtung? + +* Was genau misst der Gyrosensor? (Amplitude, Beschleunigungsspitzen, Winkel, Kombi) +* Wie viele Referenzwiederholungen für saubere Kalibrierung? +* Re-Kalibrierung wann möglich? +* Verhalten bei Fehlschlag der Kalibrierung? +* Mehrere Kalibrierungen pro Profil/Übung speichern? +* Kalibrierung pro Übung oder pro Bewegungsrichtung? ### Antwort-Empfehlungen -- ✅ **Sensorik-Kombi**: Accelerometer (Beschleunigungs-Threshold pro Wiederholung) + Gyroskop (Winkel-Extrempunkte) -- ✅ **5 Referenzwiederholungen** als Standard, keine skip-optionen fürs kalibrieren -- ✅ **Re-Kalibrierung manuell** jederzeit möglich (Settings → Übung → neu kalibrieren). **Auto-Re-Kalibrierung** wenn Bewegungserkennung an 2 aufeinanderfolgenden Trainingseinheiten schlechter als 70 % Confidence. -- ✅ **Fehlschlag-Handling**: UI zeigt konkrete Anweisungen ("Smartphone zu locker", "zu langsam", "Winkel zu klein") + Re-Try-Button -- ⚠️ **Eine Kalibrierung pro Übung pro Profil** für v1.0 (vereinfacht DB-Schema). Mehrere Kalibrierungen (Tagesform) v2.x. -- ✅ **Pro Übung, eine Hauptkalibrierung**. Varianten (enge/breite Liegestütze) sind **eigene Übungen**. + +* ✅ **Sensorik-Kombi**: Accelerometer + Gyroskop. +* ✅ **5 Referenzwiederholungen** als Standard, keine Skip-Option fürs Kalibrieren. +* ✅ Beim ersten Öffnen einer noch nicht kalibrierten Übung ist die Kalibrierung verpflichtend. +* ✅ Ablauf: + + 1. korrekte Smartphone-Position anzeigen + 2. 5 saubere Wiederholungen durchführen + 3. Sensorwerte / Bewegungsmuster erfassen + 4. Bewegungsbereich berechnen + 5. Kalibrierung bestätigen + 6. lokal speichern + 7. Training freigeben +* ✅ **Re-Kalibrierung manuell** jederzeit möglich. +* ✅ Bei dauerhaft schlechter Erkennung empfiehlt die App eine Re-Kalibrierung. +* ✅ Richtwert: 2 Trainingseinheiten hintereinander mit weniger als ca. 70 % Confidence. +* ✅ Keine erzwungene Auto-Re-Kalibrierung. +* ✅ Auswahl bei Empfehlung: **„Neu kalibrieren“ / „Später“** +* ✅ **Fehlschlag-Handling**: UI zeigt konkrete Anweisungen wie „Bewegung zu klein“, „Bewegung zu unregelmäßig“, „Smartphone zu locker“, „Smartphone zu stark bewegt“ oder „Sensorwerte nicht eindeutig“ + erneuter Versuch mit 5 Wiederholungen. +* ✅ **Eine Kalibrierung pro Übung pro Profil** für v1.0. +* ✅ Kalibrierung erfolgt pro Übung. ## 4. Max-Rep ### Fragen -- Zählt Max-Rep in EXP-Vergabe ein? -- Wird er für Statistiken ausgewertet? -- Wiederholungszahl per Sensor oder manuell? -- Limit / Sicherheitsabbruch bei Formeinbruch? -- Anzeige prominent oder versteckt? + +* Zählt Max-Rep in EXP-Vergabe ein? +* Wird er für Statistiken ausgewertet? +* Wiederholungszahl per Sensor oder manuell? +* Limit / Sicherheitsabbruch bei Formeinbruch? +* Anzeige prominent oder versteckt? ### Antwort-Empfehlungen -- ✅ **Max-Rep zählt EXP** (siehe §1) -- ✅ **Statistik-Max-Rep**: ja, eigener Chart mit Verlauf + persönlicher Rekord -- ✅ **Sensor-Zählung primär** + manueller Override-Button ("Mehr gemacht? Hier anpassen") -- ✅ **Sicherheitsabbruch**: kein hartes Limit, aber Warnton + Vibrations-Pulse wenn Form-Degradation erkannt wird (Acceleration-Varianz steigt um Faktor 1.5+) -- ✅ **Prominente Anzeige** auf Hauptmenü: "Klimmzüge — Level 6 · Max-Rep 8" (gibt intrinsische Motivation) + +* ✅ **Max-Rep zählt EXP**: jede Wiederholung = `2 EXP`. +* ✅ **Statistik-Max-Rep**: eigener Verlauf + persönlicher Rekord. +* ✅ **Sensor-Zählung primär** + manuelle Korrektur über `+1` / `−1`. +* ✅ Kein hartes Limit und kein automatischer Sicherheitsabbruch. +* ✅ Bei deutlich schlechter werdender Bewegungserkennung: Vibrationssignal + visueller Hinweis. +* ✅ **Prominente Anzeige** bei der jeweiligen Übung, z. B. `Klimmzüge — Level 6 · Max-Rep 8`. +* ⚠️ Konkrete Sensor-Schwellwerte für Warnungen werden erst nach Praxistests festgelegt. ## 5. Profile ### Fragen -- Welche Aktivitätslevel-Werte genau? -- Wie viele Profile maximal? -- Avatar / Foto — ja oder nur Text? -- Löschen / Umbenennen möglich? -- Profilwechsel mid-training erlaubt? -- Datenmigration geplant? -- Mehrere Personen auf einem Gerät — Feature oder Risiko? + +* Welche Aktivitätslevel-Werte genau? +* Wie viele Profile maximal? +* Avatar / Foto — ja oder nur Text? +* Löschen / Umbenennen möglich? +* Profilwechsel mid-training erlaubt? +* Datenmigration geplant? +* Mehrere Personen auf einem Gerät — Feature oder Risiko? ### Antwort-Empfehlungen -- ✅ **Aktivitätslevel**: 4 Werte — "Anfänger" / "Hobby" (1–2x/Woche) / "Aktiv" (3–4x/Woche) / "Leistungssportler" -- ✅ **Max 8 Profile** pro Gerät (mehr ist selten realistisch; falls doch nötig: Cloud-Sync in v2.x) -- ✅ **Avatar via Emoji-Auswahl** (kein Foto in v1.0 — Privacy + Storage) -- ✅ **Löschen mit Bestätigungs-Dialog** (zwei Mal tippen) · **Umbenennen** jederzeit -- ⚠️ **Profilwechsel mid-training gesperrt** — verhindert versehentlichen Daten-Mix -- ✅ **Datenmigration v1.x**: JSON-Export/Import via Share-Sheet (kein Cloud-Zwang, DSGVO-clean) -- 💬 **Multi-User auf einem Gerät** = bewusstes Feature (Familien-Use-Case), aber **kein Login-Schutz** in v1.0. Wer das braucht: PIN-Sperre optional in v2.x. + +* ✅ **Aktivitätslevel**: 4 Werte — „Anfänger“ / „Hobby“ (1–2x/Woche) / „Aktiv“ (3–4x/Woche) / „Leistungssportler“ +* ✅ **Keine künstliche Begrenzung** der Profilanzahl. +* ✅ Profil enthält: Name, Größe, Gewicht, Aktivitätslevel und Emoji-Avatar. +* ✅ **Avatar via Emoji-Auswahl**, kein Foto in v1.0. +* ✅ **Löschen mit Bestätigungsdialog** · **Umbenennen** jederzeit. +* ✅ Beim Löschen werden Trainingsdaten, Level, EXP, Statistiken und Kalibrierungen des Profils dauerhaft gelöscht. +* ✅ **Profilwechsel mid-training gesperrt**. +* ✅ **Datenmigration**: JSON-Export/Import. +* ✅ **Multi-User auf einem Gerät** = bewusstes Feature. +* ✅ Kein PIN-/Passwortschutz in v1.0. ## 6. Trainingseinheit & Progression ### Fragen -- Wann genau rückt man eine Einheit vor (Konflikt idee.md ↔ progress.md)? -- Regenerationstage: nur passive Anzeige oder Stretching-Bonusaufgaben? -- Pausen-Timer: nur Countdown oder Sound/Haptik? -- Bewegungserkennung-Fehler: manuelle Korrektur möglich? -- Wann gilt Satz als bestanden? (vollständig oder Mindest-Schwelle) -- Übungs-Reihenfolge: frei oder fixer Tagesplan? + +* Wann genau rückt man eine Einheit vor (Konflikt idee.md ↔ progress.md)? +* Regenerationstage: nur passive Anzeige oder Stretching-Bonusaufgaben? +* Pausen-Timer: nur Countdown oder Sound/Haptik? +* Bewegungserkennung-Fehler: manuelle Korrektur möglich? +* Wann gilt Satz als bestanden? (vollständig oder Mindest-Schwelle) +* Übungs-Reihenfolge: frei oder fixer Tagesplan? ### Antwort-Empfehlungen -- ✅ **Nicht bestanden = dieselbe Einheit erneut** (übereinstimmend mit `progress.md`-Logik). Vorrücken erst wenn bestanden. -- ✅ **Regenerationstage**: passive Anzeige + 3 optionale Stretching-Vorschläge (statisch, kein Sensor-Tracking) -- ✅ **Pausen-Timer**: Countdown + dezenter Tick-Ton letzte 5 Sek. + Vibrations-Pulse bei Satzende -- ✅ **Manuelle Korrektur**: "+1" / "−1" Button am Satzende (wenn Sensor-Erkennung danebenlag) -- ✅ **Satz bestanden** = alle Ziel-Wiederholungen erreicht. Bei Sensor-Fehler zählt manuelle Korrektur. -- ✅ **Übungs-Reihenfolge**: frei wählbar pro Trainingstag, aber App **schlägt Reihenfolge** vor (z. B. Klimmzüge zuerst wenn noch am kräftigsten) + +* ✅ **Nicht bestanden = dieselbe Einheit erneut**. Vorrücken erst wenn bestanden. +* ✅ **Regenerationstage**: passive Anzeige mit Hinweis `Heute ist Regenerationstag.` + Anzeige der nächsten geplanten Einheit. +* ✅ Restdays sind empfohlen, aber nicht verpflichtend. +* ✅ Button **„Restday skippen“**, um direkt die nächste reguläre Einheit zu starten. +* ✅ **Pausen-Timer**: standardmäßig 60 Sekunden, manuell bis auf 5 Sekunden reduzierbar. +* ✅ Sichtbarer Countdown + Tick / Countdown in den letzten 5 Sekunden + Vibration bei Pausenende. +* ✅ Sounds und Haptik können in den Einstellungen deaktiviert werden. +* ✅ **Manuelle Korrektur**: `+1` / `−1` am Satzende. +* ✅ **Satz bestanden** = alle Ziel-Wiederholungen erreicht. +* ✅ **Einheit bestanden** = alle regulären Sätze vollständig abgeschlossen. +* ✅ **Übungs-Reihenfolge**: frei wählbar, keine Pflichtreihenfolge in v1.0. ## 7. Übungen ### Fragen -- Wann kommt Dips (5. Übung)? -- Neue Übungen über App oder Code-Update? -- Sonderregeln pro Übung (z. B. Plank mit Zeit)? -- Variationen als eigene Übung oder Modifikation? + +* Wann kommt Dips (5. Übung)? +* Neue Übungen über App oder Code-Update? +* Sonderregeln pro Übung (z. B. Plank mit Zeit)? +* Variationen als eigene Übung oder Modifikation? ### Antwort-Empfehlungen -- ✅ **Dips: v1.0 mit dabei** (5. Übung, Farbe Cyan/Lila) -- ✅ **v1.x**: neue Übungen per Code-Update (Release-Notes) — **keine User-definierten Übungen** (validierte Progressionstabellen sind nicht trivial) -- ✅ **Sonderregeln pro Übung**: möglich (Plank mit Zeit, Burpees mit Combo-Zähler), aber jede Sonderregel ist eigene Übung mit eigener Progressionstabelle -- ✅ **Variationen = eigene Übung** (z. B. "Enge Liegestütze" separat von "Liegestütze") -- 💬 Langfristig: Community-Übungen in v2.x als opt-in Content-Pack + +* ✅ **v1.0**: Liegestütze, Kniebeugen, Klimmzüge, Sit-ups. +* ✅ **Dips ab v1.x** als erste zusätzliche Übung. +* ✅ Neue Übungen per App-/Code-Update. +* ✅ **Keine User-definierten Übungen** in v1.x. +* ⚠️ Sonderregeln wie zeitbasierte Übungen werden später separat betrachtet. +* ✅ **Übungsvariationen bleiben vorerst komplett außen vor**. +* ✅ Keine engen/breiten Varianten, Griffvarianten oder sonstigen Unterformen für v1.0 / v1.x geplant. ## 8. Sensorik / Hardware ### Fragen -- Welche Sensoren genau? -- Smartphone-Mounting-Empfehlung? -- Geräteanforderungen? -- Fallback ohne Sensor? -- Gleich gute Erkennung für alle Übungen? + +* Welche Sensoren genau? +* Smartphone-Mounting-Empfehlung? +* Geräteanforderungen? +* Fallback ohne Sensor? +* Gleich gute Erkennung für alle Übungen? ### Antwort-Empfehlungen -- ✅ **Accelerometer + Gyroskop** (Standard in allen modernen Smartphones) -- ✅ **Mounting-Empfehlung**: Brustgurt-Halterung für Klimmzüge/Liegestütze, Oberschenkel-Halterung für Kniebeugen, freiliegend (Boden) für Sit-ups -- ✅ **Geräteanforderungen**: iOS 14+ / Android 8+ mit Gyroskop (Pre-2017 Geräte sind Ausnahme) -- ✅ **Fallback ohne Sensor**: manuelle Wiederholungs-Eingabe per Tap-Button -- 💬 **Klimmzüge sind Sensor-anspruchsvoll** (vertikale hängende Position, viel Bewegung im Schulterbereich). Hier ggf. zusätzlicher Algorithmus mit Winkel-Threshold statt Beschleunigungs-Threshold. + +* ✅ **Accelerometer + Gyroskop**. +* ✅ ausschließlich **Android**. +* ✅ **Liegestütze**: Smartphone wird so positioniert, dass die Nase bei jeder vollständigen Wiederholung das Smartphone / Display berührt. +* ✅ **Kniebeugen, Klimmzüge und Sit-ups**: Erkennung über Bewegungs-/Sensordaten. +* ✅ Vor der Kalibrierung zeigt die App ein **Piktogramm / eine Illustration**, wie das Smartphone gehalten bzw. positioniert werden muss. +* ✅ Das gleiche Piktogramm wird auch **vor jedem normalen Training** der jeweiligen Übung angezeigt. +* ✅ Kalibrierung und späteres Training müssen mit derselben Smartphone-Position durchgeführt werden. +* ✅ **Fallback ohne funktionierende Sensorerkennung**: manueller Rep-Counter. +* ⚠️ Exakte Smartphone-Position für Kniebeugen, Klimmzüge und Sit-ups wird durch Praxistests festgelegt. +* ⚠️ Konkrete Erkennungsalgorithmen / Thresholds werden durch Praxistests festgelegt. +* ⚠️ Mindest-Android-Version noch offen. ## 9. UI / UX & Tech-Stack ### Fragen -- Plattform: Native, Flutter, React Native, PWA? -- Offline-First oder Cloud-Sync? -- Notifications / Reminder? -- Sprachen? -- Dark Mode? -- Sounds / Haptik? + +* Plattform: Native, Flutter, React Native, PWA? +* Offline-First oder Cloud-Sync? +* Notifications / Reminder? +* Sprachen? +* Dark Mode? +* Sounds / Haptik? ### Antwort-Empfehlungen -- ✅ **Flutter** — eine Codebase für iOS + Android, gute Sensorik-Support, schnelle UI-Iteration -- ✅ **Offline-First** — alle Daten lokal (SQLite), Cloud-Sync optional in v2.x -- ✅ **Notifications** für Trainingstage (Tag vorher + am Tag selbst) + Regenerations-Reminder (optional) -- ✅ **Sprachen v1.0**: Deutsch + Englisch (Struktur für einfache i18n-Erweiterung) -- ✅ **Dark Mode** mit System-Follow -- ✅ **Sounds + Haptik** für Satzwechsel, Tier-Up, Bestleistung (alles in Settings einzeln deaktivierbar) + +* ✅ **Flutter / Dart** +* ✅ ausschließlich **Android** +* ✅ **vollständig lokal / Offline-First** +* ✅ kein Backend, keine Cloud, keine Accounts und keine Online-API-Abhängigkeiten. +* ✅ **Sprache v1.0: nur Deutsch** +* ✅ Theme folgt standardmäßig dem System. +* ✅ Nutzer kann optional **Hell** oder **Dunkel** erzwingen. +* ✅ **Täglicher lokaler Trainings-Reminder**, Uhrzeit wird vom User selbst festgelegt. +* ✅ Kurzes dezentes **„Bing“** nach jeder erfolgreich erkannten Wiederholung. +* ✅ Tick / Countdown in den letzten 5 Sekunden der Pause + Vibration bei Pausenende. +* ✅ Sounds und Haptik deaktivierbar. +* ✅ **Font Awesome Free** für allgemeine UI-Icons (`font_awesome_flutter`). +* ✅ Eigene lokale Piktogramme für Smartphone-Haltung / spezielle Trainingsanzeigen. +* ✅ Icons, Sounds, Bilder und sonstige Assets werden lokal mit der App ausgeliefert. +* ✅ Keine Assets werden online nachgeladen. +* ✅ **State Management:** Riverpod +* ✅ **Navigation:** go_router +* ✅ **Lokale Datenbank:** Drift + SQLite +* ✅ **Sensorzugriff:** sensors_plus +* ✅ **Lokale Notifications:** flutter_local_notifications +* ✅ **Sounds:** audioplayers ## 10. Daten & Persistenz ### Fragen -- Speicher: lokal (SQLite/JSON/Core Data) oder Cloud? -- Backup-Strategie? -- DSGVO / Datenschutz? -- Datenformat für späteren Umzug? + +* Speicher: lokal (SQLite/JSON/Core Data) oder Cloud? +* Backup-Strategie? +* DSGVO / Datenschutz? +* Datenformat für späteren Umzug? ### Antwort-Empfehlungen -- ✅ **SQLite** lokal (Flutter-Default, performant für 8 Profile × 5 Übungen × 13 Einheiten × 4 Sätze × Reps + Verlauf) -- ✅ **Backup**: JSON-Export/Import manuell + Auto-Backup alle 7 Tage in App-internen Storage -- ✅ **DSGVO**: alle Daten lokal, keine Telemetrie, keine User-IDs, kein Cloud. Privacy-Policy in App. -- ✅ **Datenformat**: SQLite-Schema dokumentiert + JSON-Export mit Schema-Version. Migration bei Major-Updates mit Schema-Validator. + +* ✅ **Drift + SQLite** für lokale Trainings- und Profildaten. +* ✅ Nutzerdaten werden strikt von App-Inhalten / Assets getrennt gespeichert. +* ✅ User-Datenbank enthält u. a. Profile, Level, EXP, Tier, Trainingsfortschritt, Einheiten, Sätze, Wiederholungen, Max-Reps, Rekorde, Kalibrierungsdaten und Trainingshistorie. +* ✅ App-Inhalte wie Übungen, Trainingspläne, Icons, Piktogramme und Sounds liegen davon getrennt. +* ✅ App-Updates oder neue Übungen dürfen bestehende Nutzerdaten **niemals löschen oder überschreiben**. +* ✅ Datenbankänderungen erfolgen ausschließlich über **Schema-Versionen + Migrationen**. +* ✅ **Backup**: manueller JSON-Export / Import. +* ✅ Export enthält eine Schema-Version für spätere Migrationen. +* ✅ Kein automatisches Cloud-Backup. +* ✅ Kleine Einstellungen wie Theme, Sound, Vibration, Reminder-Uhrzeit und Satzpause werden separat lokal gespeichert. +* ✅ **DSGVO / Datenschutz**: keine Accounts, keine Cloud, keine Telemetrie, keine Analytics, keine Trainingsdaten verlassen das Gerät. ## 11. Statistiken & Feedback ### Fragen -- Verlaufschart pro Übung? -- Persönliche Bestleistungen? -- Wochen-/Monatsstatistik? -- Streak-Tracking? + +* Verlaufschart pro Übung? +* Persönliche Bestleistungen? +* Wochen-/Monatsstatistik? +* Streak-Tracking? ### Antwort-Empfehlungen -- ✅ **Verlaufschart pro Übung** — Trainingslast (Sätze × Reps) über die letzten 30 Einheiten -- ✅ **Persönliche Bestleistungen** je Übung + Max-Rep-Rekord separat -- ✅ **Wochenstatistik** prominent (diese Woche: 4/4 Trainings absolviert, 480 EXP, Tier-Up in 320 EXP) -- ✅ **Streak-Tracking** (aktuelle Serie, längste Serie) — motivierender gamification-light Touch + +* ✅ **Statistiken pro Übung**: + + * aktuelles Level + * aktuelles Tier + * aktuelle EXP / Fortschritt zum nächsten Level + * letzter Max-Rep + * persönlicher Max-Rep-Rekord + * Max-Rep-Verlauf + * absolvierte Einheiten + * Gesamtwiederholungen + * Trainingsvolumen +* ✅ **Verlaufscharts pro Übung**, standardmäßig über die letzten 30 Einheiten. +* ✅ Chart-Ansichten: Wiederholungen, Gesamtvolumen, Max-Rep, EXP-Verlauf. +* ✅ **Wochenstatistik**: absolvierte Trainings, gesamte Wiederholungen, verdiente EXP, neue Rekorde und ggf. geskippte Restdays. +* ✅ **Streak-Tracking** basiert auf geplanten Trainingseinheiten, nicht auf Kalendertagen. +* ✅ Restday unterbricht Streak nicht. +* ✅ Restday skippen + Training unterbricht Streak nicht. +* ✅ Geplanten Trainingstag auslassen beendet die Streak. +* ✅ Persönliche Rekorde mindestens für höchsten Max-Rep, höchste Wiederholungszahl in einer Einheit, Gesamtwiederholungen und längste Trainings-Streak. ## 12. Soziale / Gamification-Features (offen) ### Fragen -- Achievements / Badges? -- Tagesziel / Wochenziel außerhalb 30-Tage-Plan? -- Freund:innen / Leaderboard? -- Trainings-Tagebuch / Notizen? + +* Achievements / Badges? +* Tagesziel / Wochenziel außerhalb 30-Tage-Plan? +* Freund:innen / Leaderboard? +* Trainings-Tagebuch / Notizen? ### Antwort-Empfehlungen -- ⚠️ **Achievements**: kleine Badges für "Erste Einheit bestanden", "7-Tage-Streak", "Tier-Up", "Alle 4 Übungen getestet" — kosmetisch, kein Pay-to-Win -- ⚠️ **Wochenziel** optional: vom User setzbar ("3x diese Woche"), App erinnert wenn Plan abweicht -- ❌ **Leaderboard/Freund:innen**: out-of-scope für v1.0 (Privacy, Server-Kosten) -- ✅ **Trainings-Tagebuch**: einfache Notiz pro Einheit (max 280 Zeichen), optional + +* ✅ **Achievements / Badges in v1.0**. +* ✅ Achievements sind rein kosmetisch und geben keine zusätzlichen EXP. +* ✅ Beispiele: + + * erste Einheit abgeschlossen + * 100 Wiederholungen + * 1.000 Wiederholungen + * erster Max-Rep + * neuer Max-Rep-Rekord + * Level 10 erreicht + * Beginner abgeschlossen + * erstes Tier-Up + * 5er-Streak + * 10er-Streak + * 25er-Streak + * alle vier Übungen trainiert + * 10 Restdays geskippt +* ✅ **Persönliches Wochenziel** in v1.0, z. B. `3 Trainingseinheiten diese Woche`. +* ❌ **Freunde / Leaderboards / soziale Online-Features** nicht in v1.0. +* ✅ **Trainings-Tagebuch** auf v1.x verschoben. +* ⚠️ Freunde, Leaderboards oder Challenges werden nur später neu bewertet, falls LevelRep überhaupt Online-Funktionen erhält. ## 13. Fehler- & Edge-Cases ### Fragen -- App-Crash mid-Einheit — teilweise bestanden speichern? -- Sensor-Ausfall mid-workout? -- Akku leer im Max-Rep? -- Gerät neu kalibriert nötig mid-workout? + +* App-Crash mid-Einheit — teilweise bestanden speichern? +* Sensor-Ausfall mid-workout? +* Akku leer im Max-Rep? +* Gerät neu kalibriert nötig mid-workout? ### Antwort-Empfehlungen -- ✅ **Auto-Save nach jedem Satz** (in SQLite). Bei Crash: vorherige Sätze bleiben, aktueller Satz verloren (User kann manuell nachtragen oder wiederholen) -- ✅ **Sensor-Ausfall**: App bietet manuellen Tap-Counter an, Training läuft normal weiter -- ✅ **Akku-Safe-Mode**: bei <15 % Akku optional Training ohne Sensor + Vibration-only Timer -- ✅ **Re-Kalibrierung mid-workout**: App pausiert aktuelle Einheit, fordert Re-Kalibrierung, setzt Einheit fort (verlorene Sätze zählen nicht als bestanden — Einheit muss wiederholt werden wenn Re-Kalibrierung mitten in Einheit) + +* ✅ **Auto-Save nach jedem abgeschlossenen Satz**. +* ✅ Bei Crash / unerwartetem Schließen bleiben alle abgeschlossenen Sätze erhalten. +* ✅ Der aktuell laufende Satz gilt als nicht abgeschlossen. +* ✅ Beim Neustart erscheint **„Training fortsetzen?“** +* ✅ **Sensor-Ausfall**: Training wird nicht abgebrochen; App informiert den User und wechselt auf manuellen Rep-Counter. +* ✅ Bereits abgeschlossene Sätze bleiben bei Sensor-Ausfall erhalten. +* ✅ **Akku-Warnung** bei niedrigem Akkustand, Richtwert `<15 %`. +* ✅ Auswahl: normal weitertrainieren oder auf manuellen Rep-Counter wechseln. +* ✅ Kein automatisches Umschalten. +* ✅ **Re-Kalibrierung mid-workout**: bereits abgeschlossene Sätze bleiben gültig. +* ✅ Nur der aktuelle Satz wird pausiert / verworfen. +* ✅ Nach Re-Kalibrierung wird nur der aktuelle Satz erneut gestartet. +* ✅ Beim absichtlichen Verlassen eines laufenden Trainings erscheint: + + * „Training fortsetzen“ + * „Training speichern & verlassen“ + * „Training verwerfen“ ## 14. Roadmap-Reihenfolge (Priorisierung offen) ### Antwort-Empfehlung (vorgeschlagene Roadmap) -**v1.0 (MVP) — ~3 Monate** -- 4 Übungen (Liegestütze, Kniebeugen, Klimmzüge, Sit-ups) + Dips -- 3 Tiers mit existierenden Progressionstabellen -- 1 Profil pro Gerät (max 8 Profile, optional wechseln) -- Kalibrierung mit Sensor + manuellem Fallback -- 30-Tage-Trainingsplan mit Regenerationstagen -- Max-Rep optional nach letzter Einheit -- SQLite-Speicher, JSON-Export -- Deutsch + Englisch, Dark Mode -- Offline-First +**Keine festen Zeitangaben — Entwicklung nach Meilensteinen.** -**v1.x (3–6 Monate nach MVP)** -- Achievements / Badges -- Wochenziel-Feature -- Trainings-Tagebuch -- iCloud/Google-Drive Backup-Integration +**M1 – App-Grundgerüst** -**v2.0 (12+ Monate)** -- Multi-User Cloud-Sync mit Account-System -- Community-Übungen -- Übungs-Varianten pro User -- Apple-Watch / Wear-OS Companion +* Flutter-Projekt +* Profile +* Navigation +* lokale Datenbank +* Theme +* lokale Einstellungen +* Grunddesign + +**M2 – erste komplette Übung** + +* Liegestütze vollständig umsetzen +* Smartphone-Anleitung / Piktogramm +* Kalibrierung +* Wiederholungserkennung +* Trainingsanzeige +* Satzsystem +* Pausentimer +* Max-Rep +* Trainingsabschluss +* lokale Speicherung + +**M3 – Trainingssystem** + +* Tiers +* 30-Tage-Progression +* Restdays +* Restday skippen +* Max-Rep +* EXP +* Level +* Tier-Up + +**M4 – alle vier Übungen** + +* Liegestütze +* Kniebeugen +* Klimmzüge +* Sit-ups +* Sensorlogik +* Kalibrierung +* Piktogramme zur Smartphone-Position + +**M5 – Gamification & Statistik** + +* Levelanzeige +* EXP-Fortschritt +* Streaks +* Achievements +* Wochenziele +* Rekorde +* Max-Rep-Verlauf +* Statistiken +* Charts + +**M6 – Stabilisierung** + +* Crash-Verhalten +* Sensor-Fallback +* Akku-Warnung +* Datenbank-Migrationen +* JSON-Export / Import +* Praxistests +* Sensor-Feintuning +* UI-/UX-Feinschliff + +**M7 – v1.0 Release** + +* 4 Kernübungen +* vollständiges lokales Trainingssystem +* Level- und Tier-System +* Sensorik / Kalibrierung +* Statistiken / Gamification +* Offline-Datenhaltung + +**v1.x** + +* Dips +* weitere Übungen +* Trainings-Tagebuch +* weitere Achievements +* verbesserte Statistiken +* Sensor-Feintuning +* UI-Verbesserungen +* bessere lokale Backup-Funktionen + +**Vorerst nicht eingeplant** + +* Cloud +* Account-System +* Freunde +* Leaderboards +* Online-Challenges +* Community-Übungen +* Übungsvariationen +* Wearables +* iOS --- ## Meta -- Diese Datei lebt im Repo und wird mit jeder neuen Entscheidung kürzer. -- Vorschlag: nach jeder Klärung die Antwort **direkt im Repo** dokumentieren (oder in `idee.md` / `progress.md` einpflegen) und den Eintrag hier löschen bzw. mit Verweis stehen lassen. -- ✅ = Vorschlag zum Übernehmen · ⚠️ = Diskussionspunkt · ❌ = bewusst raus · 💬 = freier Kommentar +* Diese Datei lebt im Repo und wird mit jeder neuen Entscheidung kürzer. +* Vorschlag: nach jeder Klärung die Antwort **direkt im Repo** dokumentieren (oder in `idee.md` / `progress.md` einpflegen) und den Eintrag hier löschen bzw. mit Verweis stehen lassen. +* ✅ = Vorschlag zum Übernehmen · ⚠️ = Diskussionspunkt · ❌ = bewusst raus · 💬 = freier Kommentar