commit e238a0b1d7e5b3983b902f5bbf610c0cf170f6ec Author: Amine El Hajami Date: Fri Apr 24 12:58:17 2026 +0200 Dateien nach "/" hochladen diff --git a/PLAN2.md b/PLAN2.md new file mode 100644 index 0000000..af7e73d --- /dev/null +++ b/PLAN2.md @@ -0,0 +1,140 @@ +# 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.