# fitness-guys/fitness-tracker-app architecture

> Architecture diagram of the GitHub repository fitness-guys/fitness-tracker-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fitness-guys/fitness-tracker-app
- Repository: https://github.com/fitness-guys/fitness-tracker-app

## Overview

Fitness Tracker is an Android self-reporting workout app. Users sign up or log in, navigate to workout tracking, record exercise and elapsed time, then finish at a calorie/time summary; the home dashboard reads saved workouts and presents totals. Profile management and categorized YouTube workout tutorials are separate product branches. The README documents the tracking and playback capabilities, but their source was not sampled, so those links are not inferred. Social features are described as optional plans, not established runtime behavior.

Main entry points: [`app/src/main/java/edu/csueb/codepath/fitness_tracker/MainActivity.java`](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/MainActivity.java) (Tab navigation), [`app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/TrackFragment.java`](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/TrackFragment.java) (Workout screen), [`app/src/main/java/edu/csueb/codepath/fitness_tracker/LoginActivity.java`](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/LoginActivity.java) (Login), [`app/src/main/java/edu/csueb/codepath/fitness_tracker/SignupActivity.java`](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/SignupActivity.java) (Sign up)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_account["Account and navigation"]
  node_login["Login<br/>[LoginActivity.java]"]
  node_signup["Sign up"]
  node_main["Tab navigation<br/>[MainActivity.java]"]
end

subgraph group_tracking["Workout tracking"]
  node_track["Workout screen<br/>[TrackFragment.java]"]
  node_timer["Workout timer<br/>[workout_timer.java]"]
  node_summary["Workout summary"]
  node_workout["Workout data<br/>[Workout.java]"]
end

subgraph group_insights["Dashboard and profile"]
  node_home["Home dashboard<br/>[HomeFragment.java]"]
  node_home_list["Workout list"]
  node_profile["Profile"]
  node_profile_edit["Profile editing<br/>[ProfileEdit.java]"]
end

subgraph group_learning["Workout tutorials"]
  node_learn["Tutorial categories<br/>[LearnFragment.java]"]
  node_learn_adapter["Category adapter"]
  node_results["Tutorial results"]
  node_youtube_api["YouTube API client<br/>[YoutubeAPI.java]"]
  node_tutorial_adapter["Video list adapter"]
  node_playback["Video playback"]
end

node_user(("App user"))
node_parse[("Parse backend")]
node_youtube{{"YouTube service"}}

node_user -->|"enters credentials"| node_login
node_user -->|"submits details"| node_signup
node_login -->|"authenticates"| node_parse
node_signup -->|"creates account"| node_parse
node_login -->|"opens on success"| node_main
node_signup -->|"opens on success"| node_main
node_main -->|"selects tab"| node_home
node_main -->|"selects tab"| node_track
node_main -->|"selects tab"| node_learn
node_main -->|"selects tab"| node_profile
node_home -->|"queries workouts"| node_parse
node_home -->|"updates list"| node_home_list
node_profile -->|"reads current user"| node_parse
node_profile -->|"opens editor"| node_profile_edit
node_learn -->|"displays categories"| node_learn_adapter
node_learn_adapter -->|"opens category"| node_results
node_results -->|"requests videos"| node_youtube_api
node_youtube_api -->|"fetches results"| node_youtube
node_results -->|"updates video list"| node_tutorial_adapter
node_user -->|"starts workout"| node_track
node_track -.->|"tracks elapsed time"| node_timer
node_track -.->|"finishes workout"| node_summary
node_summary -.->|"summarizes activity"| node_workout
node_workout -.->|"stores workout"| node_parse
node_user -.->|"plays tutorial"| node_playback

click node_login "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/LoginActivity.java"
click node_signup "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/SignupActivity.java"
click node_main "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/MainActivity.java"
click node_track "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/TrackFragment.java"
click node_timer "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_timer.java"
click node_summary "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_summary.java"
click node_workout "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/Workout.java"
click node_home "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/HomeFragment.java"
click node_home_list "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/HomeWorkoutListAdapter.java"
click node_profile "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/ProfileFragment.java"
click node_profile_edit "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/ProfileEdit.java"
click node_learn "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/LearnFragment.java"
click node_learn_adapter "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/LearnListAdapter.java"
click node_results "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/rvLearnFragmentNotFrag.java"
click node_youtube_api "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/network/YoutubeAPI.java"
click node_tutorial_adapter "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/TutorialAdapterHome.java"
click node_playback "https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/TutorialPlayback.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login,node_signup,node_main,node_user toneBlue
class node_track,node_timer,node_summary,node_workout,node_parse toneAmber
class node_home,node_home_list,node_profile,node_profile_edit toneMint
class node_learn,node_learn_adapter,node_results,node_youtube_api,node_tutorial_adapter,node_playback toneRose
class node_youtube toneIndigo
```

## Components

### Account and navigation

- [Login](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/LoginActivity.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/LoginActivity.java`
- [Sign up](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/SignupActivity.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/SignupActivity.java`
- [Tab navigation](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/MainActivity.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/MainActivity.java`

### Workout tracking

- [Workout screen](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/TrackFragment.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/TrackFragment.java`
- [Workout timer](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_timer.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_timer.java`
- [Workout summary](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_summary.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/workout_summary.java`
- [Workout data](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/Workout.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/Workout.java`

### Dashboard and profile

- [Home dashboard](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/HomeFragment.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/HomeFragment.java`
- [Workout list](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/HomeWorkoutListAdapter.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/HomeWorkoutListAdapter.java`
- [Profile](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/ProfileFragment.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/ProfileFragment.java`
- [Profile editing](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/ProfileEdit.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/ProfileEdit.java`

### Workout tutorials

- [Tutorial categories](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/LearnFragment.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/LearnFragment.java`
- [Category adapter](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/LearnListAdapter.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/LearnListAdapter.java`
- [Tutorial results](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/rvLearnFragmentNotFrag.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/fragments/rvLearnFragmentNotFrag.java`
- [YouTube API client](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/network/YoutubeAPI.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/network/YoutubeAPI.java`
- [Video list adapter](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/TutorialAdapterHome.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/adapters/TutorialAdapterHome.java`
- [Video playback](https://github.com/fitness-guys/fitness-tracker-app/blob/main/app/src/main/java/edu/csueb/codepath/fitness_tracker/TutorialPlayback.java): `app/src/main/java/edu/csueb/codepath/fitness_tracker/TutorialPlayback.java`

### Other components

- **App user**
- **Parse backend**
- **YouTube service**

## Connections

- App user → Login: enters credentials
- App user → Sign up: submits details
- Login → Parse backend: authenticates
- Sign up → Parse backend: creates account
- Login → Tab navigation: opens on success
- Sign up → Tab navigation: opens on success
- Tab navigation → Home dashboard: selects tab
- Tab navigation → Workout screen: selects tab
- Tab navigation → Tutorial categories: selects tab
- Tab navigation → Profile: selects tab
- Home dashboard → Parse backend: queries workouts
- Home dashboard → Workout list: updates list
- Profile → Parse backend: reads current user
- Profile → Profile editing: opens editor
- Tutorial categories → Category adapter: displays categories
- Category adapter → Tutorial results: opens category
- Tutorial results → YouTube API client: requests videos
- YouTube API client → YouTube service: fetches results
- Tutorial results → Video list adapter: updates video list
- App user → Workout screen: starts workout
- Workout screen → Workout timer: tracks elapsed time
- Workout screen → Workout summary: finishes workout
- Workout summary → Workout data: summarizes activity
- Workout data → Parse backend: stores workout
- App user → Video playback: plays tutorial
