# alexalkhatib/activity-management-system architecture

> Architecture diagram of the GitHub repository alexalkhatib/activity-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alexalkhatib/activity-management-system
- Repository: https://github.com/alexalkhatib/activity-management-system

## Overview

FitTrack is a server-rendered fitness-tracking web application. Users register or sign in, then record workouts and exercises, log body measurements, maintain a profile, and review dashboard statistics. The documented architecture is web → service → repository → domain, with Thymeleaf views; sampled services confirm workout, exercise, measurement, and account behavior. The README documents additional dashboard, profile, and REST API capabilities. Some controller/service links are supported by the README’s layer description rather than sampled controller implementations.

Main entry points: [`src/main/java/com/fittrack/service/DashboardService.java`](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/DashboardService.java) (Dashboard analytics), [`src/main/java/com/fittrack/service/WorkoutService.java`](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/WorkoutService.java) (Workout management), [`src/main/resources/application.properties`](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/resources/application.properties) (Configured database), [`src/main/java/com/fittrack/service/UserService.java`](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/UserService.java) (Account management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_auth["Account access"]
  node_workout_ui["Workout screens"]
  node_exercise_ui["Exercise screens"]
  node_measure_ui["Measurement screens"]
  node_profile_ui["Profile screens"]
  node_dashboard_ui["Dashboard and stats"]
  node_views["Server-rendered views"]
  node_stats_api["Stats REST API"]
end

subgraph group_services["Fitness services"]
  node_accounts["Account management<br/>[UserService.java]"]
  node_workouts["Workout management"]
  node_exercises["Exercise library"]
  node_measurements["Body measurements"]
  node_dashboard["Dashboard analytics"]
  node_calculator["Fitness calculations"]
end

subgraph group_data["Domain and persistence"]
  node_domain["Fitness domain"]
  node_workout_repo["Workout repository"]
  node_measurement_repo["Measurement repository"]
  node_exercise_repo["Exercise repository"]
  node_user_repo["User repository"]
  node_role_repo["Role repository"]
end

subgraph group_platform["Application platform"]
  node_database[("Configured database")]
  node_security["Authentication security"]
end

node_user(("Fitness user"))

node_user -->|"registers or signs in"| node_auth
node_user -->|"manages sessions"| node_workout_ui
node_user -->|"manages exercises"| node_exercise_ui
node_user -->|"logs measurements"| node_measure_ui
node_user -->|"updates profile"| node_profile_ui
node_user -->|"reviews progress"| node_dashboard_ui
node_auth -->|"registers accounts"| node_accounts
node_workout_ui -->|"manages workouts"| node_workouts
node_exercise_ui -->|"searches library"| node_exercises
node_measure_ui -->|"manages entries"| node_measurements
node_profile_ui -->|"updates account"| node_accounts
node_dashboard_ui -->|"loads analytics"| node_dashboard
node_stats_api -->|"serves statistics"| node_dashboard
node_workouts -->|"resolves exercises"| node_exercises
node_workouts -->|"reads current weight"| node_measurements
node_workouts -->|"estimates calories"| node_calculator
node_workouts -->|"saves and queries"| node_workout_repo
node_exercises -->|"gets current user"| node_user_repo
node_exercises -->|"queries and saves"| node_exercise_repo
node_measurements -->|"queries and saves"| node_measurement_repo
node_accounts -->|"queries and saves"| node_user_repo
node_accounts -->|"loads user role"| node_role_repo
node_dashboard -->|"queries workouts"| node_workout_repo
node_dashboard -->|"queries measurements"| node_measurement_repo
node_dashboard -->|"computes metrics"| node_calculator
node_dashboard -->|"supplies dashboard data"| node_views
node_stats_api -->|"returns dashboard data"| node_views
node_workout_repo -->|"persists workout data"| node_database
node_measurement_repo -->|"persists measurement data"| node_database
node_exercise_repo -->|"persists exercise data"| node_database
node_user_repo -->|"persists account data"| node_database
node_role_repo -->|"persists roles"| node_database
node_auth -.->|"uses form login"| node_security
node_views -->|"renders pages"| node_user

click node_auth "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/AuthController.java"
click node_workout_ui "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/WorkoutController.java"
click node_exercise_ui "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/ExerciseController.java"
click node_measure_ui "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/MeasurementController.java"
click node_profile_ui "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/ProfileController.java"
click node_dashboard_ui "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/MainController.java"
click node_views "https://github.com/alexalkhatib/activity-management-system/tree/main/src/main/resources/templates"
click node_stats_api "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/StatsApiController.java"
click node_accounts "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/UserService.java"
click node_workouts "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/WorkoutService.java"
click node_exercises "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/ExerciseService.java"
click node_measurements "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/MeasurementService.java"
click node_dashboard "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/DashboardService.java"
click node_calculator "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/FitnessCalculator.java"
click node_domain "https://github.com/alexalkhatib/activity-management-system/tree/main/src/main/java/com/fittrack/domain"
click node_workout_repo "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/WorkoutRepository.java"
click node_measurement_repo "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/MeasurementRepository.java"
click node_exercise_repo "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/ExerciseRepository.java"
click node_user_repo "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/UserRepository.java"
click node_role_repo "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/RoleRepository.java"
click node_database "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/resources/application.properties"
click node_security "https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/config/SecurityConfig.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_auth,node_workout_ui,node_exercise_ui,node_measure_ui,node_profile_ui,node_dashboard_ui,node_views,node_stats_api,node_user toneBlue
class node_accounts,node_workouts,node_exercises,node_measurements,node_dashboard,node_calculator toneAmber
class node_domain,node_workout_repo,node_measurement_repo,node_exercise_repo,node_user_repo,node_role_repo toneMint
class node_database,node_security toneRose
```

## Components

### Web experience

- [Account access](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/AuthController.java): `src/main/java/com/fittrack/web/AuthController.java`
- [Workout screens](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/WorkoutController.java): `src/main/java/com/fittrack/web/WorkoutController.java`
- [Exercise screens](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/ExerciseController.java): `src/main/java/com/fittrack/web/ExerciseController.java`
- [Measurement screens](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/MeasurementController.java): `src/main/java/com/fittrack/web/MeasurementController.java`
- [Profile screens](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/ProfileController.java): `src/main/java/com/fittrack/web/ProfileController.java`
- [Dashboard and stats](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/MainController.java): `src/main/java/com/fittrack/web/MainController.java`
- [Server-rendered views](https://github.com/alexalkhatib/activity-management-system/tree/main/src/main/resources/templates): `src/main/resources/templates`
- [Stats REST API](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/web/StatsApiController.java): `src/main/java/com/fittrack/web/StatsApiController.java`

### Fitness services

- [Account management](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/UserService.java): `src/main/java/com/fittrack/service/UserService.java`
- [Workout management](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/WorkoutService.java): `src/main/java/com/fittrack/service/WorkoutService.java`
- [Exercise library](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/ExerciseService.java): `src/main/java/com/fittrack/service/ExerciseService.java`
- [Body measurements](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/MeasurementService.java): `src/main/java/com/fittrack/service/MeasurementService.java`
- [Dashboard analytics](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/DashboardService.java): `src/main/java/com/fittrack/service/DashboardService.java`
- [Fitness calculations](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/service/FitnessCalculator.java): `src/main/java/com/fittrack/service/FitnessCalculator.java`

### Domain and persistence

- [Fitness domain](https://github.com/alexalkhatib/activity-management-system/tree/main/src/main/java/com/fittrack/domain): `src/main/java/com/fittrack/domain`
- [Workout repository](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/WorkoutRepository.java): `src/main/java/com/fittrack/repository/WorkoutRepository.java`
- [Measurement repository](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/MeasurementRepository.java): `src/main/java/com/fittrack/repository/MeasurementRepository.java`
- [Exercise repository](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/ExerciseRepository.java): `src/main/java/com/fittrack/repository/ExerciseRepository.java`
- [User repository](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/UserRepository.java): `src/main/java/com/fittrack/repository/UserRepository.java`
- [Role repository](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/repository/RoleRepository.java): `src/main/java/com/fittrack/repository/RoleRepository.java`

### Application platform

- [Configured database](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/resources/application.properties): `src/main/resources/application.properties`
- [Authentication security](https://github.com/alexalkhatib/activity-management-system/blob/main/src/main/java/com/fittrack/config/SecurityConfig.java): `src/main/java/com/fittrack/config/SecurityConfig.java`

### Other components

- **Fitness user**

## Connections

- Fitness user → Account access: registers or signs in (evidence: `README.md`)
- Fitness user → Workout screens: manages sessions (evidence: `README.md`)
- Fitness user → Exercise screens: manages exercises (evidence: `README.md`)
- Fitness user → Measurement screens: logs measurements (evidence: `README.md`)
- Fitness user → Profile screens: updates profile (evidence: `README.md`)
- Fitness user → Dashboard and stats: reviews progress (evidence: `README.md`)
- Account access → Account management: registers accounts (evidence: `src/main/java/com/fittrack/web/AuthController.java`)
- Workout screens → Workout management: manages workouts (evidence: `README.md`)
- Exercise screens → Exercise library: searches library (evidence: `src/main/java/com/fittrack/web/ExerciseController.java`)
- Measurement screens → Body measurements: manages entries (evidence: `src/main/java/com/fittrack/web/MeasurementController.java`)
- Profile screens → Account management: updates account (evidence: `src/main/java/com/fittrack/web/ProfileController.java`)
- Dashboard and stats → Dashboard analytics: loads analytics (evidence: `src/main/java/com/fittrack/web/MainController.java`)
- Stats REST API → Dashboard analytics: serves statistics (evidence: `src/main/java/com/fittrack/web/StatsApiController.java`)
- Workout management → Exercise library: resolves exercises (evidence: `src/main/java/com/fittrack/service/WorkoutService.java`)
- Workout management → Body measurements: reads current weight (evidence: `src/main/java/com/fittrack/service/WorkoutService.java`)
- Workout management → Fitness calculations: estimates calories (evidence: `README.md`)
- Workout management → Workout repository: saves and queries (evidence: `src/main/java/com/fittrack/service/WorkoutService.java`)
- Exercise library → User repository: gets current user (evidence: `src/main/java/com/fittrack/service/ExerciseService.java`)
- Exercise library → Exercise repository: queries and saves (evidence: `src/main/java/com/fittrack/service/ExerciseService.java`)
- Body measurements → Measurement repository: queries and saves (evidence: `src/main/java/com/fittrack/service/MeasurementService.java`)
- Account management → User repository: queries and saves (evidence: `src/main/java/com/fittrack/service/UserService.java`)
- Account management → Role repository: loads user role (evidence: `src/main/java/com/fittrack/service/UserService.java`)
- Dashboard analytics → Workout repository: queries workouts (evidence: `src/main/java/com/fittrack/service/DashboardService.java`)
- Dashboard analytics → Measurement repository: queries measurements (evidence: `src/main/java/com/fittrack/service/DashboardService.java`)
- Dashboard analytics → Fitness calculations: computes metrics (evidence: `src/main/java/com/fittrack/service/DashboardService.java`)
- Dashboard analytics → Server-rendered views: supplies dashboard data (evidence: `src/main/java/com/fittrack/service/DashboardService.java`)
- Stats REST API → Server-rendered views: returns dashboard data (evidence: `README.md`)
- Workout repository → Configured database: persists workout data (evidence: `README.md`)
- Measurement repository → Configured database: persists measurement data (evidence: `README.md`)
- Exercise repository → Configured database: persists exercise data (evidence: `README.md`)
- User repository → Configured database: persists account data (evidence: `README.md`)
- Role repository → Configured database: persists roles (evidence: `README.md`)
- Account access → Authentication security: uses form login (evidence: `README.md`)
- Server-rendered views → Fitness user: renders pages (evidence: `README.md`)
