141 lines
6.1 KiB
Markdown
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.
|