Update Go4Champion Dokumentation authored by diak6730's avatar diak6730
# Inhaltsverzeichnis
1. [Projektbeschreibung](./Projektbeschreibung)
2. [Team](./Team)
3. [Tech-Stack](./Tech-Stack)
4. [Systemarchitektur & Datenmodell](./Systemarchitektur-Datenmodell)
5. [Benutzerdokumentation](./Benutzerdokumentation)
6. [Entwicklerdokumentation](./Entwicklerdokumentation)
7. [Testing](./Testing)
8. [Arbeitsprozess](./Arbeitsprozess)
9. [Reflexion](./Reflexion)
10. [Ausblick & Future Work](./Ausblick-Future-Work)
11. [Quellen](./Quellen)
12. [Anhang](./Anhang)
# 1. Projektbeschreibung
**Go4Champion** ist eine App, die Menschen beim Erreichen ihrer Fitnessziele unterstützt, egal ob man Muskeln aufbauen, abnehmen oder einfach gesünder leben möchte. Die App erstellt automatisch Trainingspläne und Rezeptvorschläge, die genau auf die eigenen Ziele und Bedürfnisse abgestimmt sind.
Eine integrierte KI erstellt individuelle Trainingspläne und Rezeptvorschläge, unter Berücksichtigung von Allergien, Krankheiten und Vorlieben. Gamification-Elemente wie Punkte, Ranglisten und Challenges mit Freund:innen steigern die Motivation. Ein Newsfeed sorgt zusätzlich für Updates und Inspiration im Alltag.
## 1.1 Ziel & Motivation
Viele Fitness-Apps sind entweder zu allgemein, unübersichtlich oder verlieren nach kurzer Zeit ihren Reiz. Unser Ziel mit **Go4Champion** ist es, eine App zu schaffen, die Nutzer:innen langfristig motiviert, ihnen wirklich passende Trainings- und Ernährungspläne macht, und das auf eine einfache und verständliche Weise.
Unser Anspruch war es, eine App zu zu entwickeln, die personalisiert arbeitet, Ziele unterstützt, soziale Elemente integriert, langfristige Motivation bietet und einfach zu bedienen ist.
## 1.2 Hauptfunktionen
- **KI-gestützte Trainingspläne**: automatisch erstellt basierend auf persönlichen Daten (Alter, Gewicht, Ziele)
- **Rezepte**: individuell abgestimmt, inkl. Allergien und Vorlieben
- **Gamification**: Punkte, Ranglisten, Challenges
- **Zusatz des Newsfeeds**: Updates und Motivation durch andere
## 1.3 Was macht Go4Champion besonders?
- App passt sich individuell an jede Person an
- Kombination aus KI und Gamification
- Berücksichtigt gesundheitliche Einschränkungen und Vorlieben
- Gamification-Elemente erhöhen die Langzeitmotivation
- Nutzt die Claude API (von Anthropic) für die Erstellung personalisierter Trainingspläne und Vorschläge und für die Erstellung personalisierter Ernährungspläne
## 1.4 Zielgruppen
- Menschen, die gerne fitter werden wollen, aber nicht wissen, wie sie anfangen sollen
- Fortgeschrittene, mit konkreten Zielen
- Menschen mit Ernährungseinschränkungen
- Alle, die Spaß an Challenges und kleinen Erfolgen haben
# 2. Team
## 2.1 Teammitglieder
Unser Team besteht aus sechs Studierenden, die unterschiedliche Stärken in das Projekt eingebracht haben:
- **Selma Sagun (951418)** - s92379@bht-berlin.de
- **Dilnur Akgün (100713)** - diak6730@bht-berlin.de
- **Mitra Dinar (944580)** - s93118@bht-berlin.de
- **Dila Gümüssoy (945656)** - s92624@bht-berlin.de
- **Süheyl Aslan (100703)** - suas4491@bht-berlin.de
- **Adham Khalil (952596)** - S93338@bht-mail.de
## 2.2 Rollen
**Frontend**
- Selma Sagun
- Dila Gümüssoy
- Mitra Dinar
- Dilnur Akgün
**Backend**
- Adham Khalil
- Süheyl Aslan
# 3. Tech-Stack
## 3.1 Übersicht des Tech-Stacks
### Frontend
- **React Native** mit **Expo Go**
- **JavaScript**
- **HTML** und **CSS**
### Backend
- **Java**
- **Spring Boot** als Framework
- **SQL**
### REST API
- **Swagger API**
### Künstliche Intelligenz (KI)
- **Claude API (Anthropic)**
## 3.2 Entwicklungsumgebungen
- **IntelliJ IDEA**
Für das Backend
- **Visual Studio Code**
Für das Frontend
- **Swagger UI**
Dokumentation und testen der API-Endpunkte
## 3.3 APIs und externe Dienste
- **Claude API (Anthropic)**
Zur Generierung der Trainings- und Ernährungspläne per KI
## 3.4 Datenbank
- **SQL**
Wurde zur stetigen Speicherung eingesetzt
# 4. Systemarchitektur & Datenmodell
## 4.1 Architektur der Anwendung
Die Anwendung besteht aus drei Hauptkomponenten:
- **Frontend** – Mobile App zur Interaktion mit Nutzer:innen
- **Backend** – Logik, Datenverarbeitung, KI-Anbindung
- **Externe Dienste** – Claude API für KI
Alle Komponenten kommunizieren über eine REST API. Die Architektur ist modular aufgebaut, damit einzelne Teile unabhängig weiterentwickelt werden können.
## 4.2 Backend Struktur
Das Backend wurde mit **Java** und **Spring Boot** entwickelt. Es bietet:
- REST-API-Endpunkte
- Anbindung an die Claude API
- Zugriff auf SQL-Datenbank
- Datenverarbeitung (z.B. Trainingspläne, Nutzerdaten)
Swagger wurde verwendet, um die API-Endpunkte zu dokumentieren und zu testen.
## 4.3 Frontend-Struktur
Das Frontend basiert auf **React Native mit Expo Go** und **JavaScript**. Hauptfunktionen sind:
- Nutzeranmeldung und Profilerstellung
- Anfragen an das Backend (z.B. Trainings- und Ernährungsplan generieren)
- Darstellung von Trainings, Rezepten und Punkten
- Gamification-Elemente (Ranglisten)
## 4.4 Datenmodell
Das folgende Diagramm stellt unser **Entity-Relationship-Modell (ER-Modell)** dar. Es bildet die Grundlage für die Datenbankstruktur. Die wichtigsten Entitäten wie 'User', 'Training', 'Friendships', 'Recipe' oder 'Challenges' sowie deren Beziehungen sind dargestellt.
![UML_Class_Diagramm](uploads/84e18287ddc62834f19df9d45eda0623/UML_Class_Diagramm.png)
## 4.5 Sequenzdiagramm: Trainingsplan mit KI
Der folgende Ablauf zeigt, wie ein personalisierter Plan mithilfe der **Claude API** erstellt wird. Um das zu ermöglichen, werden Benutzerdaten wie Alter, Gewicht und Zielgewicht ausgelesen, zu einem Prompt verarbeitet und an die KI gesendet. Die generierten Übungen werden gespeichert und erscheinen anschließend direkt im Nutzerprofil.
```mermaid
sequenceDiagram
participant User
participant Frontend
participant Backend
participant DB as Datenbank
participant KI as KI (Claude API)
User->>Frontend: Klickt auf "Trainingsplan erstellen"
Frontend->>Backend: POST /api/trainingsplan-anfrage
Backend->>DB: Lade Nutzerprofil (Alter, Gewicht, Zielgewicht)
DB-->>Backend: Gibt Nutzerdaten zurück
Backend->>Backend: Erstelle Prompt für KI (z. B. "Erstelle 3 Trainings für 25 Jahre, 85 kg...")
Backend->>KI: Sende Prompt an Claude API
KI-->>Backend: Gibt JSON-Antwort mit Übungen zurück
Backend->>Backend: Wandelt Übungen in Trainings-Objekte um
Backend->>Backend: Erstellt AIPlan + Trainings-Einträge
Backend->>DB: Speichert Plan + Trainings + Zuordnung zum Nutzer
Backend-->>Frontend: Antwort mit neuem Plan
Frontend-->>User: Zeigt neuen Trainingsplan an
```
## 4.6 Sequenzdiagramm: Ernährungsplan mit KI
Im Gegensatz zum Trainingsplan geht es bei der Erstellung des Ernährungsplans vor allem um persönliche Vorlieben, Allergien oder Ernährungstypen. Nachdem die entsprechenden Nutzerdaten aus der Datenbank geladen wurden z. B. Alter, Gewicht, Zielgewicht und Ernährungseinschränkungen, generiert das System einen passenden Prompt für die KI. Die Claude API liefert daraufhin individuelle Rezeptvorschläge zurück. Diese Rezepte werden im System gespeichert, dem aktuellen Nutzerprofil zugeordnet und direkt in der App angezeigt.
```mermaid
sequenceDiagram
participant User
participant Frontend
participant Backend
participant DB as Datenbank
participant KI as KI (Claude API)
User->>Frontend: Klickt auf "Ernährungsplan erstellen"
Frontend->>Backend: POST /api/ernaehrungsplan-anfrage
Backend->>DB: Lade Nutzerdaten (Alter, Gewicht, Zielgewicht, Vorlieben, Allergien)
DB-->>Backend: Gibt Nutzerdaten zurück
Backend->>Backend: Erstelle Prompt für KI (z. B. "Erstelle 3 Rezepte für eine 25-jährige Person mit 85 kg, Ziel: 75 kg, vegan.")
Backend->>KI: Sende Prompt an Claude API
KI-->>Backend: Gibt JSON-Antwort mit Rezepten zurück
Backend->>Backend: Wandelt Rezepte in Objekte um
Backend->>Backend: Erstellt AIPlan + Rezept-Einträge
Backend->>DB: Speichert Plan + Rezepte + Zuordnung zum Nutzer
Backend-->>Frontend: Antwort mit neuem Ernährungsplan
Frontend-->>User: Zeigt neuen Ernährungsplan an
```
# 5. Benutzerdokumentation
## 5.2 Zielgruppen
Wer nutzt die App und was können die User in der App machen?
Die App richtet sich an Personen, die ihre Fitness verbessern möchten. Es gibt aktuell nur eine Rolle und das ist der User. Nutzer:innen können Trainings- und Ernährungspläne generieren lassen, an Challenges teilnehmen und Punkte sammeln.
## 5.2 Navigation und Hauptfunktionen der App
Die App ist in folgende Hauptbereiche unterteilt:
- **Startseite**: Übersicht und Einstieg
- **Trainingsplan**: Generierte Workouts durch KI
- **Ernährungsplan**: Generierte Rezepte durch KI
- **Challenges**: Rangliste und Punkte
- **Profil**: Einstellungen
## 5.3 Hilfe & FAQ
Für allgemeine Fragen und Fragen zur Bedienung gibt es in der App einen eigenen FAQ-Bereich.
# 6. 📘 Developer Guide – Project Setup & Local Development
Welcome to this open-source project!
This guide explains how to set up and run the application locally. It ensures that all contributors use a consistent environment to streamline development and collaboration.
---
## ✅ Prerequisites
To avoid compatibility issues, please use the following versions:
| Tool / Library | Required Version |
|--------------------------|------------------|
| IntelliJ IDEA | 2025.1 |
| Java JDK | 21 |
| Git | 2.49.0 |
| Node.js | 23.11.0 |
| npm | 10.9.2 |
| Spring Boot | 3.4.4 |
| Maven | 3.9.9 |
| MySQL | 9.3.0 |
---
## 🔁 Clone the Repository
Make sure Git is installed:
👉 [Download Git](https://git-scm.com/downloads)
Then clone the project:
```bash
git clone https://gitlab.com/your-org/project-name.git
cd project-name
```
Replace the URL with the actual repository path.
---
## ⚙️ Backend Setup (Java + Spring Boot + Maven + H2)
### 1. Install Java 21
- **macOS**:
```bash
brew install temurin
```
- **Linux**:
```bash
sudo apt update
sudo apt install openjdk-21-jdk
```
- **Windows**:
[Download Oracle JDK 21](https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html)
**Check installation:**
```bash
java -version
```
---
### 2. Install Maven
- **macOS**:
```bash
brew install maven
```
- **Linux**:
```bash
sudo apt update
sudo apt install maven
```
- **Windows**:
[Download Maven](https://maven.apache.org/download.cgi)
**Check installation:**
```bash
mvn -v
```
---
### 3. Start the Backend
From the root folder (where `pom.xml` is):
```bash
mvn spring-boot:run
```
When running:
- Swagger UI: [http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html)
**MySQL Login:**
- JDBC URL: `jdbc:mysql://localhost:3306/go4champ`
- Username: `go4champ_user`
- Password: <...>
---
## 💻 Frontend Setup (React + Node.js)
### 1. Install Node.js and npm
👉 [Download Node.js](https://nodejs.org/)
**Verify installation:**
```bash
node -v
npm -v
```
---
### 2. Install Frontend Dependencies
```bash
cd frontend
npm install
```
---
### 3. Start the React App
```bash
npm run dev
```
This will launch the app at:
👉 [http://localhost:5173](http://localhost:5173)
---
## 🧠 Notes & Conventions
- Backend port: `8080`
- Frontend port: `5173`
- API requests from the frontend should use `http://localhost:8080`
## 🧪 Testing
### Backend
```bash
mvn test
```
### Frontend
```bash
npm test
```
## 💡 Suggestions
To further improve the project setup:
- Add `.env` files for API URLs and secrets
- Use ESLint and Prettier for consistent code formatting
- Provide Git hooks (e.g., Husky) to check commits
- Create a `CONTRIBUTING.md` with collaboration guidelines
---
## 🚀 Quick Setup Summary
```bash
# Clone the project
git clone https://gitlab.com/your-org/project-name.git
cd project-name
# Run backend
mvn spring-boot:run
# Run frontend
cd frontend
npm install
npm run dev
```
---
## 🙌 Contribution
Feel free to fork, branch, and open merge requests!
We welcome all contributions.
# 7. Testing
## 7.1 Playtest
Testplan
Ergebnisse
Analysen
Schlussfolgerungen
Actions
## 7.2 Integrationstests
### 7.3 Testreport
## 7.4 CI/CD Pipeline idealerweise integriert
# 8. Arbeitsprozess
## 8.1 Tools für die Zusammenarbeit
- **GitLab**: Codeverwaltung, Versionskontrolle, Wiki (Dokumentation), Issues
## 8.2 Meetings
- Teammetings über Discord
- On-Demand-Calls bei Fragen (ebenfalls über Discord)
## 8.3 Vorgehen
- Aufgaben wurden entweder über GitLab Issues oder in Meetings verteilt
# 9. Reflexion
## 9.1 Was lief gut?
-
## 9.2 Besonderheiten & Herausforderungen
## 9.3 Persönliche Learnings
## 9.4 Rückblick & Verbesserungen
## 9.5 Was ich aus der Veranstaltung mitgenommen habe
# 10. Ausblick & Future Work
## 10.1 Offene Punkte
- Ernährungsplan
- KI Chatbot
## 10.2 Ideen für zukünftige Features
# 11. Quellen
- KI (ChatGPT, Gemini)
- YouTube Tutorials
- Mermaid
# 12. Anhang
## 12.1 Meeting-Protokolle
## 12.2 Skizzen & Ideen
## 12.3 Mock-ups
## 12.4 Abschlusspräsentation