Implementation Plan + verbleibende offene Fragen
- implementation-plan.md: 7 Meilensteine (M1-M7) + v1.x, jede Task klein genug für eine Session, basiert auf den Antworten in offene-fragen.md - offene-fragen-v2.md: nur die 5-7 echten ⚠️-Punkte, die noch offen sind (EXP-Kurve, Max-Rep-Zielwerte, Tier-Up-Visualisierung, Sensor-Schwellwerte, Android-Min, Positionen, Algorithmen) Vorschlaege in den Tasks mit ⚠️ENTSCHEIDUNG markiert, damit klar ist, welche Defaults ich anbiete und was noch durch dich bestaetigt werden muss.
This commit is contained in:
1 parent
3e9877cbe9
commit
86e44497dc
2 files changed
+491
No files matched your search
@@ -0,0 +1,446 @@
|
||||
# LevelRep – Implementation Plan
|
||||
|
||||
> Stand: 25.08.2026 · abgeleitet aus `offene-fragen.md` & `offene-fragen-v2.md`
|
||||
>
|
||||
> **Zweck:** Diesen Plan Schritt für Schritt durchgehen. Jede Task ist klein
|
||||
> genug, um in einer Session abgeschlossen zu werden. Keine parallelen
|
||||
> Branches, keine halben Sachen.
|
||||
>
|
||||
> **Stack-Realität:** Flutter · Drift+SQLite · Riverpod · go_router ·
|
||||
> sensors_plus · flutter_local_notifications · audioplayers ·
|
||||
> font_awesome_flutter. Diese Festlegungen stammen aus `offene-fragen.md`
|
||||
> Block 9 und werden hier **nicht erneut diskutiert**.
|
||||
>
|
||||
> **Reihenfolge:** M1 → M2 → M3 → M4 → M5 → M6 → M7. Jeder Meilenstein
|
||||
> produziert eine **lauffähige App**, auch wenn Features noch fehlen.
|
||||
|
||||
---
|
||||
|
||||
## M1 – App-Grundgerüst (Foundation)
|
||||
|
||||
> **Ziel:** App startet, Profile können angelegt/gewählt werden, Navigation
|
||||
> und Theme funktionieren, lokale Datenbank steht mit Schema v1, lokale
|
||||
> Einstellungen sind speicherbar. Noch **kein** Training, **keine** Sensorik.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **1.1 Mindest-Android-Version festlegen** ⚠️ENTSCHEIDUNG
|
||||
* Vorschlag: **Android 9 (API 28)** als Minimum, targetSdk 34.
|
||||
* Warum: deckt >97 % der aktiven Geräte ab, sensors_plus und
|
||||
flutter_local_notifications laufen sauber.
|
||||
* → bei Annahme in `offene-fragen-v2.md` Punkt 5 als gelöst markieren.
|
||||
|
||||
* **1.2 Flutter-Projekt anlegen**
|
||||
* `flutter create --org de.mexx.levelrep --platforms=android levelrep`
|
||||
* minSdk/targetSdk in `android/app/build.gradle.kts` setzen.
|
||||
* App-Name **LevelRep**, Icon-Placeholder.
|
||||
|
||||
* **1.3 Dependencies pinnen** (alle aus Block 9):
|
||||
* flutter_riverpod, riverpod_annotation
|
||||
* go_router
|
||||
* drift, drift_dev, sqlite3_flutter_libs, path_provider, path
|
||||
* sensors_plus
|
||||
* flutter_local_notifications, timezone
|
||||
* audioplayers
|
||||
* font_awesome_flutter
|
||||
* shared_preferences (für kleine Settings)
|
||||
* build_runner, riverpod_generator (dev)
|
||||
|
||||
* **1.4 Projektstruktur (lib/)**
|
||||
```
|
||||
lib/
|
||||
app/ # MaterialApp, Theme, RouterConfig
|
||||
core/ # Konstanten, Extensions, Utils
|
||||
data/
|
||||
db/ # Drift-Database, DAOs, Schema-Migrations
|
||||
models/ # Plain DTOs
|
||||
repositories/ # CRUD-Wrapper um DAOs
|
||||
features/
|
||||
profile/ # Profilauswahl, -erstellung
|
||||
settings/ # Theme, Sound, Vibration, Reminder
|
||||
ui/ # gemeinsame Widgets, Farben, Typo
|
||||
```
|
||||
|
||||
* **1.5 Theme**
|
||||
* System folgen + Override Hell/Dunkel.
|
||||
* Farben als Konstanten aus `idee.md` (Rot/Blau/Grün/Gelb) ableiten.
|
||||
* Font Awesome Free als globaler Icon-Set.
|
||||
|
||||
* **1.6 Drift-Datenbank v1 – nur Profile**
|
||||
* Tabelle `Profiles` (id, name, heightCm, weightKg, activityLevel,
|
||||
avatarEmoji, createdAt, schemaVersion).
|
||||
* Schema-Versionierung eingebaut, Migration-Stub vorhanden
|
||||
(für Block 10 wichtig).
|
||||
|
||||
* **1.7 Navigation (go_router)**
|
||||
* Routen: `/` (Profile-Auswahl), `/profile/new`, `/home`,
|
||||
`/settings`, `/settings/theme`.
|
||||
* Empty-State für `/home` (Platzhalter "Übungsauswahl kommt in M2").
|
||||
|
||||
* **1.8 Profil-Features (CRUD)**
|
||||
* Liste vorhandener Profile auf Startseite.
|
||||
* Neues Profil anlegen (Name, Größe, Gewicht, Aktivitätslevel,
|
||||
Emoji-Avatar aus Vorauswahl).
|
||||
* Löschen mit Bestätigungsdialog, Umbenennen, Wechsel.
|
||||
* Aktivitätslevel: 4 Werte gemäß Block 5.
|
||||
|
||||
* **1.9 Lokale Einstellungen**
|
||||
* Theme (System / Hell / Dunkel), Sound, Vibration,
|
||||
Reminder-Uhrzeit (default 18:00).
|
||||
* Persistierung via `shared_preferences`.
|
||||
|
||||
* **1.10 Verifikation M1**
|
||||
* App startet im Emulator, Profil anlegen → erscheint in Liste.
|
||||
* App neu starten → Profil ist noch da.
|
||||
* Theme-Switch funktioniert.
|
||||
* Drift-Schema-Inspect via `drift_dev` zeigt Tabelle `Profiles`.
|
||||
|
||||
---
|
||||
|
||||
## M2 – Erste komplette Übung (Liegestütze)
|
||||
|
||||
> **Ziel:** Eine Übung (Liegestütze) ist **komplett** spielbar: Kalibrierung,
|
||||
> Trainingseinheit, Satzsystem, Pausen, Max-Rep, Speicherung. Noch ohne
|
||||
> Tier-/Level-System.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **2.1 Übungs-Katalog als Code**
|
||||
* Enum / Konstante `Exercise { pushup, squat, pullup, situp }`.
|
||||
* Farben, Display-Namen, Piktogramm-Asset-Slots pro Übung.
|
||||
* v1.0: nur `pushup` aktiv geschaltet, andere als "Coming Soon".
|
||||
|
||||
* **2.2 Smartphone-Positions-Piktogramm (Liegestütze)**
|
||||
* Eigenes Asset `assets/piktograms/pushup_position.png`.
|
||||
* Wird vor Kalibrierung und vor jedem Training angezeigt (Block 8).
|
||||
|
||||
* **2.3 Kalibrierungs-Flow**
|
||||
* Beim ersten Öffnen einer Übung (per Profile → Übung) Pflicht-Kalibrierung
|
||||
(Block 3).
|
||||
* 5 Referenzwiederholungen, **kein Skip**.
|
||||
* Anleitungstext + Piktogramm, dann Live-Sensor-Recording.
|
||||
* Bei Fehlschlag konkrete UI-Anweisung (Block 3 – Fehlschlag-Handling).
|
||||
* Speicherung: Tabelle `Calibrations` (profileId, exerciseId, accelerometerProfile, gyroscopeProfile, createdAt).
|
||||
|
||||
* **2.4 Sensor-Aufnahme (sensors_plus)**
|
||||
* Accelerometer + Gyroskop Stream mit ~50 Hz.
|
||||
* Pro Wiederholung: Peak-/Trough-Detektion für Liegestütze.
|
||||
* Sensor-Daten werden **nur zur Laufzeit** gehalten, nicht dauerhaft
|
||||
gespeichert (DSGVO – Block 10).
|
||||
|
||||
* **2.5 Trainingseinheit-Datenmodell (Drift)**
|
||||
* Tabellen:
|
||||
* `Units` (id, profileId, exerciseId, tier, unitNumber, status, startedAt, completedAt)
|
||||
* `Sets` (id, unitId, setIndex, targetReps, actualReps, status, startedAt, completedAt)
|
||||
* `MaxReps` (id, unitId, reps, durationSec, createdAt)
|
||||
* Schema-Version 2 → Migration 1→2 ergänzen (Block 10).
|
||||
|
||||
* **2.6 Tier-Auswahl (UI-only, keine Logik)**
|
||||
* Tier-Wahl (Beginner/Fortgeschritten/Pro) vor jeder Einheit.
|
||||
* Aktuell: Speichert nur die Wahl, Logik für Sperre kommt in M3.
|
||||
|
||||
* **2.7 Einheit laden**
|
||||
* Aus `progress.md` (Liegestütze-Spalte passend zum Tier + Unit-Nummer).
|
||||
* Fortschritt: `unitsPlanned = 13`, pro Einheit nächste Unit-Number
|
||||
berechnen.
|
||||
|
||||
* **2.8 Trainings-Screen**
|
||||
* Zeigt aktuelle Satzziele (z. B. `2 - 3 - 2 - 2`).
|
||||
* Live-Rep-Counter via Sensorik.
|
||||
* Manuelle Korrektur `+1` / `−1` am Satzende (Block 6).
|
||||
* Satz bestanden = Ziel erreicht → Pause startet.
|
||||
|
||||
* **2.9 Pausen-Timer**
|
||||
* Default 60 s, manuell bis auf 5 s reduzierbar (Block 6).
|
||||
* Countdown + Tick in letzten 5 s + Vibration am Ende.
|
||||
* Sound + Haptik via Settings toggelbar.
|
||||
|
||||
* **2.10 Max-Rep**
|
||||
* Nach letztem regulären Satz: "Max-Rep starten?" (optional).
|
||||
* Sensor- oder manuelle Rep-Erfassung.
|
||||
* Speicherung in `MaxReps`.
|
||||
|
||||
* **2.11 Auto-Save nach jedem Satz** (Block 13)
|
||||
* Nach Set-Abschluss sofort in DB persistieren.
|
||||
* Bei Crash: abgeschlossene Sätze bleiben, laufender Satz geht verloren.
|
||||
|
||||
* **2.12 Verifikation M2**
|
||||
* Pushup-Einheit komplett durchspielbar im Emulator.
|
||||
* Kalibrierung wird einmal erzwungen, danach übersprungen.
|
||||
* Auto-Save überlebt App-Force-Stop.
|
||||
* Manuelle Korrektur funktioniert.
|
||||
* Sensor-Fallback (manueller Counter) bei deaktiviertem Sensor
|
||||
vorhanden (Block 8).
|
||||
|
||||
---
|
||||
|
||||
## M3 – Trainingssystem (Tier, EXP, Level)
|
||||
|
||||
> **Ziel:** Tier-Wechsel, Level-Berechnung und EXP-Vergabe laufen.
|
||||
> EXP-Kurve wird **nach M3-Daten** final festgelegt (Punkt 1 aus
|
||||
> `offene-fragen-v2.md`).
|
||||
|
||||
### Tasks
|
||||
|
||||
* **3.1 Tier-Status-Tabelle**
|
||||
* `ProfileTierProgress` (profileId, exerciseId, tier, level, exp, lastUnitNumber, maxRepRecord, updatedAt).
|
||||
* Pro Übung drei Zeilen pro Profil (für die drei Tiers) — eine davon aktiv.
|
||||
|
||||
* **3.2 Tier-Wechsel-Logik** (Block 2)
|
||||
* Freischaltung, wenn:
|
||||
1. alle 13 Einheiten des aktuellen Tiers bestanden **und**
|
||||
2. Level-Cap erreicht (Beginner 25, Fortgeschritten 50) **und**
|
||||
3. übungsspezifischer Max-Rep-Zielwert bei ≥ 3 der letzten 5
|
||||
Einheiten erreicht.
|
||||
* UI zeigt "Tier-Up verfügbar", User bestätigt manuell.
|
||||
* Beim Wechsel: Level = 0 (Block 1).
|
||||
|
||||
* **3.3 EXP-Vergabe** (Block 1)
|
||||
* 1 EXP pro regulärer Wiederholung.
|
||||
* 2 EXP pro Max-Rep-Wiederholung.
|
||||
* Bonus beim vollständig abgeschlossenen Satz: +5 / +10 / +15
|
||||
(Beginner / Fortgeschritten / Pro).
|
||||
* Bei Nichtbestehen: keine Satz-Bonus-EXP, aber gezählte Reps bleiben.
|
||||
|
||||
* **3.4 EXP-Kurve** ⚠️ENTSCHEIDUNG
|
||||
* Vorschlag: quadratisch pro Tier-Index `t ∈ {0,1,2}`:
|
||||
`expNeeded(level, t) = 100 × (level+1) × (t+1)`.
|
||||
* → nach 2 Wochen Praxistests anhand realer EXP-Werte kalibrieren
|
||||
und in `offene-fragen-v2.md` Punkt 1 mit konkreter Tabelle fixieren.
|
||||
|
||||
* **3.5 Max-Rep-Zielwerte pro Übung/Tier** ⚠️ENTSCHEIDUNG
|
||||
* Vorschlag Startwerte (zu verifizieren in M4-Praxistests):
|
||||
|
||||
| Übung | Beg | Fort | Pro |
|
||||
|-------|-----|------|-----|
|
||||
| Pushup | 12 | 25 | 50 |
|
||||
| Squat | 20 | 40 | 75 |
|
||||
| Pullup | 4 | 10 | 20 |
|
||||
| Situp | 25 | 50 | 80 |
|
||||
|
||||
* → nach M4 in `offene-fragen-v2.md` Punkt 2 final dokumentieren.
|
||||
|
||||
* **3.6 Tier-Up UI** ⚠️ENTSCHEIDUNG
|
||||
* Modal/Bottomsheet "Tier-Up verfügbar!" mit kurzer Animation
|
||||
(z. B. Tier-Farbe aufblitzt).
|
||||
* Buttons: "Jetzt aufsteigen" / "Später".
|
||||
* Konkrete Visualisierung wird in M5 finalisiert (Punkt 3 aus
|
||||
`offene-fragen-v2.md`).
|
||||
|
||||
* **3.7 Verifikation M3**
|
||||
* Beginner-Tier komplett durchspielen → Tier-Up wird angeboten.
|
||||
* Level steigt sichtbar nach jedem Satz.
|
||||
* Wechsel auf Fortgeschritten → Level = 0, neue Progression aktiv.
|
||||
|
||||
---
|
||||
|
||||
## M4 – Alle vier Übungen
|
||||
|
||||
> **Ziel:** Kniebeugen, Klimmzüge, Sit-ups komplett spielbar mit eigener
|
||||
> Sensorlogik und Piktogrammen.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **4.1 Sensorprofile pro Übung**
|
||||
* Eigenes Detection-Modul pro Übung:
|
||||
* Kniebeugen: Vertikalbeschleunigung am Oberschenkel.
|
||||
* Klimmzüge: vertikale Hub-Bewegung + Gyro-Stabilität.
|
||||
* Sit-ups: Winkel-Kippen am Bauch.
|
||||
* Erkennungs-Algorithmus als isolierte Klasse (`<exercise>_detector.dart`).
|
||||
|
||||
* **4.2 Piktogramme für jede Übung**
|
||||
* `squat_position.png`, `pullup_position.png`, `situp_position.png`.
|
||||
* Werden vor Kalibrierung und vor jedem Training gezeigt.
|
||||
|
||||
* **4.3 Progressionen**
|
||||
* Kniebeugen / Klimmzüge / Sit-ups aus `progress.md` (Blau/Grün/Gelb)
|
||||
implementiert.
|
||||
|
||||
* **4.4 Übungs-Auswahl-Screen**
|
||||
* Vier Kacheln mit Farbe + Icon + aktuellem Level + Tier.
|
||||
* Nicht-kalibrierte Übungen mit Hinweis-Badge.
|
||||
|
||||
* **4.5 Praxistests & Sensor-Feintuning**
|
||||
* Für jede Übung: 5× Kalibrierung + 5× Trainingseinheit,
|
||||
Aufnahme-Confidence loggen.
|
||||
* Schwellwerte anpassen bis Confidence ≥ 70 % im Schnitt.
|
||||
* Wenn nach 2 Einheiten < 70 %: Re-Kalibrierungs-Empfehlung (Block 3).
|
||||
|
||||
* **4.6 Sensor-Schwellwerte dokumentieren** ⚠️ENTSCHEIDUNG
|
||||
* Pro Übung konkrete Accelerometer-/Gyro-Schwellwerte als JSON-Asset
|
||||
ablegen (`assets/calibration_thresholds.json`).
|
||||
* → Punkt 4 in `offene-fragen-v2.md` bei Abschluss dokumentieren.
|
||||
|
||||
* **4.7 Verifikation M4**
|
||||
* Alle vier Übungen komplett durchspielbar.
|
||||
* Übungswechsel ohne Profilwechsel möglich.
|
||||
* Sensor-Fallback aktiv für jede Übung.
|
||||
|
||||
---
|
||||
|
||||
## M5 – Gamification & Statistik
|
||||
|
||||
> **Ziel:** Achievements, Streaks, Charts, Wochenziele, Tier-Up-Visualisierung.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **5.1 Statistik-Tabellen (Drift)**
|
||||
* `Achievements` (id, profileId, code, unlockedAt)
|
||||
* `WeeklyGoals` (profileId, weekIso, targetUnits, achievedUnits)
|
||||
|
||||
* **5.2 Achievement-Engine** (Block 12)
|
||||
* Liste der ~14 Achievements als Code-Konstanten.
|
||||
* Triggerpunkte: nach jedem Trainingsabschluss / Satz.
|
||||
* Push-Dialog "Achievement freigeschaltet!".
|
||||
|
||||
* **5.3 Streak-Tracking** (Block 11)
|
||||
* Pro Profil + Übung.
|
||||
* Basiert auf geplanten Trainingseinheiten (Block 11).
|
||||
* Restday skippen / einlegen → bricht Streak nicht.
|
||||
* Auslassen eines geplanten Trainingstags → Streak = 0.
|
||||
|
||||
* **5.4 Wochenziele** (Block 12)
|
||||
* Default: 3 Einheiten / Woche (pro Profil, übergreifend).
|
||||
* Wöchentlicher Reset, Anzeige im Home-Screen.
|
||||
|
||||
* **5.5 Charts** (Block 11)
|
||||
* Pro Übung: Wiederholungen / Volumen / Max-Rep / EXP-Verlauf.
|
||||
* Library: `fl_chart`.
|
||||
* Default-Zeitraum: letzte 30 Einheiten.
|
||||
|
||||
* **5.6 Tier-Up-Visualisierung** ⚠️ENTSCHEIDUNG
|
||||
* Konfetti-Animation (`confetti`-Package) + kurze Tier-Farbe-Füllung
|
||||
+ Sound "level_up.mp3".
|
||||
* → Punkt 3 in `offene-fragen-v2.md` als gelöst markieren.
|
||||
|
||||
* **5.7 Persönliche Rekorde** (Block 11)
|
||||
* Höchster Max-Rep, höchste Wiederholungszahl/Einheit,
|
||||
Gesamtwiederholungen, längste Streak.
|
||||
* Eigener Screen "Rekorde".
|
||||
|
||||
* **5.8 Verifikation M5**
|
||||
* Achievement "Erste Einheit" wird ausgelöst.
|
||||
* Streak steigt nach geplantem Training, sinkt nach Überspringen.
|
||||
* Charts rendern mit echten Daten aus M2–M4.
|
||||
|
||||
---
|
||||
|
||||
## M6 – Stabilisierung
|
||||
|
||||
> **Ziel:** App ist robust gegen Crashes, Sensor-Ausfall, Akku-Warnung,
|
||||
> Datenmigration. Backup funktioniert.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **6.1 Crash-Recovery** (Block 13)
|
||||
* Nach App-Neustart Dialog "Training fortsetzen?" mit den drei
|
||||
Optionen aus Block 13.
|
||||
* Bereits abgeschlossene Sätze bleiben erhalten.
|
||||
|
||||
* **6.2 Sensor-Fallback**
|
||||
* Bei Sensor-Stream-Error → manueller Rep-Counter als Default-Modus
|
||||
für aktuellen Satz.
|
||||
* Visueller Hinweis: "Manueller Modus aktiv".
|
||||
|
||||
* **6.3 Akku-Warnung** (Block 13)
|
||||
* Bei <15 % Akku: Bottom-Sheet mit Auswahl
|
||||
"Weitertrainieren" / "Manueller Modus".
|
||||
* Kein automatisches Umschalten.
|
||||
|
||||
* **6.4 Re-Kalibrierung mid-workout** (Block 13)
|
||||
* Bereits abgeschlossene Sätze bleiben gültig.
|
||||
* Aktueller Satz wird verworfen, nach Re-Kal neu gestartet.
|
||||
|
||||
* **6.5 Sensor-Schwellwerte final**
|
||||
* Aus M4-Praxistests + M6-Re-Tests konkrete Werte in
|
||||
`calibration_thresholds.json` fixieren.
|
||||
* → Punkt 4 in `offene-fragen-v2.md` final dokumentieren.
|
||||
|
||||
* **6.6 JSON-Export / Import** (Block 5, 10)
|
||||
* Settings-Screen: "Daten exportieren" (Teilen via Android Share-Sheet).
|
||||
* "Daten importieren" mit Konflikt-Handling
|
||||
(überschreiben / zusammenführen / neues Profil).
|
||||
* Schema-Version im Export-Header.
|
||||
|
||||
* **6.7 Datenbank-Migrationen absichern** (Block 10)
|
||||
* Migration-Tests für v1 → v2 → v3 → v4 → v5.
|
||||
* App-Update darf Nutzerdaten niemals löschen.
|
||||
|
||||
* **6.8 Reminder-Notification**
|
||||
* Täglich zur eingestellten Uhrzeit.
|
||||
* Nur wenn heute Training geplant ist.
|
||||
* Block 9 – lokale Notification.
|
||||
|
||||
* **6.9 UI-/UX-Feinschliff**
|
||||
* Empty-States, Error-States, Loading-States überall.
|
||||
* Animationen sparsam, alles unter 200 ms.
|
||||
|
||||
* **6.10 Verifikation M6**
|
||||
* Force-Stop mid-Training → Wiederherstellung ok.
|
||||
* Import/Export-Roundtrip mit zwei Geräten.
|
||||
* Akku <15 % triggert Warnung.
|
||||
* Reminder kommt zur eingestellten Zeit.
|
||||
|
||||
---
|
||||
|
||||
## M7 – v1.0 Release
|
||||
|
||||
> **Ziel:** Play-Store-reifes APK, kein "Experimental"-Badge mehr, alle
|
||||
> Entscheidungen aus `offene-fragen.md` ✅ abgehakt.
|
||||
|
||||
### Tasks
|
||||
|
||||
* **7.1 Letzte offene ⚠️-Punkte abarbeiten**
|
||||
* `offene-fragen-v2.md` sollte zu diesem Zeitpunkt **leer** sein.
|
||||
* Jeder noch offene Punkt = Release-Blocker.
|
||||
|
||||
* **7.2 App-Icon & Splashscreen final**
|
||||
* **7.3 App-Name, Kurzbeschreibung, lange Beschreibung (DE)**
|
||||
* **7.4 Datenschutzerklärung / Impressum-Hinweis im App-Menü** (DSGVO)
|
||||
* Da keine Cloud, keine Telemetrie: kurzer, klarer Text.
|
||||
|
||||
* **7.5 Store-Listing (Play Store)**
|
||||
* Screenshots (4 Übungen + Profil + Statistik)
|
||||
* Feature-Liste, Versionshinweise.
|
||||
|
||||
* **7.6 Release-Build signieren**
|
||||
* Keystore erstellen, `key.properties` pflegen, `flutter build apk --release`.
|
||||
|
||||
* **7.7 QA-Pass**
|
||||
* 10 vollständige Trainingsläufe über alle 4 Übungen × 3 Tiers.
|
||||
* Mindestens 1 Kalibrierungs-Reject-Edgecase pro Übung.
|
||||
|
||||
---
|
||||
|
||||
## v1.x – danach
|
||||
|
||||
| Slot | Inhalt |
|
||||
|------|--------|
|
||||
| Dips | erste zusätzliche Übung (Block 7) |
|
||||
| Weitere Übungen | offen, App-/Code-Update |
|
||||
| Trainings-Tagebuch | Block 12 – v1.x |
|
||||
| Weitere Achievements | leicht ergänzbar in M5 |
|
||||
| Sensor-Feintuning | iterativ, basierend auf User-Feedback |
|
||||
| Backup-Funktionen | ggf. Auto-Backup-Datei, optional Sync via Datei-Picker |
|
||||
|
||||
---
|
||||
|
||||
## Cross-Cutting-Anforderungen (für jeden Meilenstein)
|
||||
|
||||
* **Auto-Save** nach jedem Satz (Block 13).
|
||||
* **Keine Online-Calls**, keine Telemetrie, keine Analytics (Block 9, 10).
|
||||
* **DSGVO-clean** — Trainingsdaten verlassen niemals das Gerät.
|
||||
* **Satzpause 60 s** Standard, manuell bis 5 s reduzierbar (Block 6).
|
||||
* **Profile** jederzeit löschbar mit Bestätigungsdialog (Block 5).
|
||||
* **Schema-Migration** sauber versioniert (Block 10).
|
||||
* **Sensor-Fallback** manueller Rep-Counter (Block 8).
|
||||
* **Sounds & Haptik** global deaktivierbar (Block 9).
|
||||
|
||||
---
|
||||
|
||||
## Tracking
|
||||
|
||||
* Jede abgeschlossene Task bekommt ein ✅ in der Commit-Message.
|
||||
* Offene ⚠️-Punkte → `offene-fragen-v2.md`.
|
||||
* Gelöste ⚠️-Punkte → Antwort hier in `ENTSCHEIDUNG`-Zeile dokumentieren
|
||||
**und** in `offene-fragen-v2.md` als gelöst markieren.
|
||||
@@ -0,0 +1,45 @@
|
||||
# LevelRep – Verbleibende offene Fragen (v2)
|
||||
|
||||
> Stand: 25.08.2026 · Fortschreibung von `offene-fragen.md`
|
||||
> Diese Datei enthält **nur die Punkte, die noch nicht final entschieden sind**.
|
||||
> Viele davon ergeben sich erst während der Implementierung / durch Praxistests
|
||||
> und werden **bewusst zurückgestellt**, statt vorab geraten zu werden.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Bereits im Implementation Plan vorgemerkt
|
||||
|
||||
| # | Thema | Verweis | Status |
|
||||
|---|-------|---------|--------|
|
||||
| 1 | Konkrete EXP-Kurve / benötigte EXP pro Level | M3 – Task 3.4 | nach M1–M2 zu klären |
|
||||
| 2 | Konkrete Max-Rep-Zielwerte pro Übung / Tier | M3 – Task 3.5 | nach ersten Praxistests |
|
||||
| 3 | Visuelle Darstellung des Tier-Ups | M5 – Task 5.6 | nach UI-Mockups |
|
||||
| 4 | Konkrete Sensor-Schwellwerte für Warnungen | M6 – Task 6.5 | durch Praxistests |
|
||||
| 5 | Mindest-Android-Version | M1 – Task 1.1 | zu Projektstart klären |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Zurückgestellt (ergeben sich erst später)
|
||||
|
||||
| # | Thema | Auslöser | Geplante Behandlung |
|
||||
|---|-------|----------|---------------------|
|
||||
| 6 | Sonderregeln zeitbasierter Übungen (z. B. Plank) | wenn solche Übungen ins Spiel kommen | separates Spec-Doc bei Bedarf |
|
||||
| 7 | Exakte Smartphone-Position für Kniebeugen / Klimmzüge / Sit-ups | Praxistests M4 | während M4 dokumentieren |
|
||||
| 8 | Konkrete Erkennungsalgorithmen / Thresholds | Praxistests M2/M4 | während M4 verfeinern |
|
||||
|
||||
---
|
||||
|
||||
## ❌ Bewusst raus (zur Erinnerung)
|
||||
|
||||
* Freunde, Leaderboards, Online-Challenges — `idee.md` bleibt Cloud-frei
|
||||
* iOS, Wearables, Übungsvariationen — Roadmap-Slot v1.x+
|
||||
|
||||
---
|
||||
|
||||
## Meta
|
||||
|
||||
* Diese Datei lebt im Repo und schrumpft mit jedem gelösten Punkt.
|
||||
* Sobald ein ⚠️-Punkt geklärt ist: Antwort hier dokumentieren **und** in den
|
||||
Implementation Plan als „ENTSCHIEDEN: <Antwort>" eintragen.
|
||||
* Die ursprüngliche `offene-fragen.md` bleibt als Decision-Memo / Archiv
|
||||
bestehen, wird aber nicht mehr aktiv erweitert.
|
||||
Reference in new issue
Block a user