Files
2026-04-24 12:58:17 +02:00

141 lines
6.1 KiB
Markdown

# Lifton Gesamtplan
## Zusammenfassung
`Lifton` ist eine Windows-Desktop-Fitness-App mit WPF und C#. Die App hilft Nutzern, Workouts detailliert zu erfassen, Fortschritt durch XP und Level sichtbar zu machen, Coins zu verdienen und Avatare im Store freizuschalten. Die Architektur folgt `MVVM`: `Views` zeigen die Oberfläche, `ViewModels` steuern die Interaktion, `Services` enthalten die Logik, und `Repositories` verbinden die App mit SQL Server über EF Core.
## Muss-Funktionen
- Benutzerkonto:
- Registrierung und Login mit Benutzername und Passwort.
- Passwörter werden mit BCrypt gehasht.
- Nutzerprofil mit Anzeigename, Fitnessziel, Wochenziel und ausgewähltem Avatar.
- Dashboard:
- Übersicht über aktuelles Level, XP, Streak, Coins und letzte Workouts.
- Anzeige des ausgerüsteten Avatars.
- Schneller Einstieg zu `Neues Workout`, `Verlauf`, `Store` und `Freunde`.
- Neues Workout:
- Nutzer wählt zuerst den Workout-Typ: `Beine`, `Brust`, `Rücken`, `Schultern`, `Arme`, `Core`, `Cardio`, `Ganzkörper`, `Custom`.
- App zeigt passende Übungen, zum Beispiel bei Beine: `Squat`, `Leg Press`, `Leg Extension`, `Leg Curl`, `Calf Raise`, `Lunges`.
- Nutzer kann Übungen auswählen und pro Übung mehrere Sets eintragen.
- Pro Set werden Gewicht, Wiederholungen und Pausenzeit gespeichert.
- Nutzer legt am Anfang eine Standardpause fest, zum Beispiel `2 Minuten`.
- Einzelne Sets können eine eigene Pausenzeit haben.
- Workout-Verlauf:
- Alle vergangenen Workouts anzeigen.
- Workouts filtern, bearbeiten und löschen.
- Änderungen an Sets oder Übungen berechnen XP und Coins neu.
- Gamification:
- Workouts geben XP für Level-Fortschritt.
- Workouts geben Coins für den Avatar-Store.
- XP wird durch Gewicht, Wiederholungen, Sets und Pausen-Konstanz berechnet.
- Coins werden getrennt von XP behandelt und beeinflussen das Level nicht.
- Avatar-Store:
- Eingebaute Avatare mit Varianten.
- Avatare können Coins kosten, ein Mindestlevel verlangen oder beides.
- Nutzer können Avatare kaufen und einen Avatar ausrüsten.
- Ausgerüsteter Avatar erscheint im Profil und Dashboard.
- Freunde und Privatsphäre:
- Freundschaftsanfragen senden, annehmen und ablehnen.
- Freunde-Liste anzeigen.
- Freundesprofil anzeigen, abhängig von Privatsphäre-Einstellungen.
- Nutzer kann festlegen, ob Freunde Level, Streak, Verlauf und Statistiken sehen dürfen.
## Datenmodell und Klassen
- Zentrale Models:
- `UserProfile`: Nutzerdaten, Login-Name, Anzeigename, Ziel und Wochenziel.
- `ProgressState`: XP, aktuelles Level, Streak, Coin-Guthaben und letztes Workout.
- `WorkoutSession`: ein komplettes Workout an einem Tag.
- `WorkoutExercise`: eine Übung innerhalb eines Workouts.
- `ExerciseSet`: ein einzelnes Set mit Gewicht, Wiederholungen, Pause und XP.
- `ExerciseCatalogItem`: Übungskatalog nach Workout-Typ.
- `AvatarCatalogItem`: Avatar im Store.
- `UserAvatarOwnership`: welche Avatare ein Nutzer besitzt.
- `Friendship`, `FriendRequest`, `PrivacySettings`: Social- und Privatsphäre-Funktionen.
- Wichtige Services:
- `AuthService`: Login, Registrierung, Logout, Passwortprüfung.
- `WorkoutService`: Workouts, Übungen und Sets speichern, bearbeiten und löschen.
- `ProgressService`: XP, Level, Streak und Coins berechnen.
- `AvatarStoreService`: Avatare kaufen und ausrüsten.
- `FriendshipService`: Freundschaften und Anfragen verwalten.
- `PrivacyService`: Sichtbarkeit von Freundesprofilen prüfen.
- `NavigationService`: Wechsel zwischen Views.
- SQL-Tabellen:
- `UserProfiles`
- `ProgressStates`
- `WorkoutSessions`
- `WorkoutExercises`
- `ExerciseSets`
- `ExerciseCatalogItems`
- `AvatarCatalogItems`
- `UserAvatarOwnerships`
- `Friendships`
- `FriendRequests`
- `PrivacySettings`
## XP- und Coin-Regeln
- XP pro Kraft-Set:
```text
SetXP = 5 + floor((GewichtKg * Wiederholungen) / 20)
```
- Wenn Gewicht `0 kg` ist, gilt Bodyweight:
```text
SetXP = 5 + floor(Wiederholungen / 2)
```
- Pausenbonus:
```text
+2 XP pro Set, wenn die echte Pause maximal 30 Sekunden von der Standardpause abweicht
```
- Abschlussbonus:
```text
+10 XP pro abgeschlossener Übung
```
- Coins:
```text
Coins = floor(GesamtWorkoutXP / 10)
```
- Wichtig:
- XP erhöht Level und Fortschritt.
- Coins werden nur im Avatar-Store ausgegeben.
- Avatar-Käufe dürfen XP oder Level nie reduzieren.
## Nice-to-Have Funktionen
- Mahlzeiten- und Kalorienrechner:
- Lebensmittel suchen.
- Mahlzeiten zusammenstellen.
- Kalorien berechnen.
- Gespeicherte Mahlzeiten oder Rezepte wiederverwenden.
- Diese Funktion bleibt getrennt von XP, Coins und Level.
- Leaderboard:
- Freunde nach XP oder Level sortieren.
- Erst sinnvoll, wenn Freundesystem fertig ist.
- Achievements:
- Badges für Meilensteine wie `100 Workouts` oder `30 Tage Streak`.
- Personal Bests:
- Beste Leistung pro Übung speichern, zum Beispiel höchstes Gewicht bei Leg Press.
- Workout Posts:
- Nutzer können ein abgeschlossenes Workout mit Freunden teilen.
- Weitere Cosmetics:
- Profilrahmen, Themes oder andere Store-Items.
## Testplan
- Registrierung erstellt Nutzerprofil, ProgressState und PrivacySettings korrekt.
- Login funktioniert nur mit korrektem Passwort.
- Neues Workout kann mit mehreren Übungen und mehreren Sets gespeichert werden.
- Standardpause wird automatisch auf neue Sets angewendet.
- Gewicht, Wiederholungen und Pausenzeit berechnen XP korrekt.
- Coins werden aus Gesamt-XP korrekt berechnet.
- Bearbeiten oder Löschen eines Sets berechnet XP, Coins und Fortschritt neu.
- Avatar kann nur gekauft werden, wenn Level und Coins ausreichen.
- Nutzer kann immer nur einen Avatar gleichzeitig ausrüsten.
- Freunde sehen nur Daten, die durch PrivacySettings erlaubt sind.
- Datenbankabfragen filtern immer nach eingeloggtem Nutzer.
## Annahmen
- Zielplattform ist Windows mit WPF.
- Programmiersprache ist C#.
- Datenbank ist SQL Server.
- EF Core wird für den Datenbankzugriff genutzt.
- Architektur ist MVVM.
- Die App ist für interne oder kontrollierte Nutzer gedacht.
- Der erste Fokus liegt auf Workout, Fortschritt, Avatar-Store und Social-Funktionen.
- Kalorienrechner, Leaderboard, Achievements und Posts kommen später.