# hrishavshrestha007/settracker architecture

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

- Interactive diagram: https://gitdiagram.com/hrishavshrestha007/settracker
- Repository: https://github.com/hrishavshrestha007/settracker

## Overview

SetTracker is a workout exercise and set/repetition tracker with a Next.js frontend and an ASP.NET Core API. Users can register or log in, browse exercises by muscle group, and save, review, or delete their exercise logs. The API separates controllers from domain services and persists users, exercises, muscle groups, and user-exercise records through Entity Framework. Frontend-to-API calls are not shown in the supplied excerpts or reference index, so those links are marked unverified; frontend page-to-action wiring is likewise not asserted.

Main entry points: [`Backend/Data/SetTrackerDbContext.cs`](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Data/SetTrackerDbContext.cs) (EF data context), [`Backend/Controllers/AuthController.cs`](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/AuthController.cs) (Authentication API), [`Backend/Controllers/ExercisesController.cs`](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/ExercisesController.cs) (Exercise API), [`Backend/Controllers/MuscleGroupController.cs`](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/MuscleGroupController.cs) (Muscle group API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User interface"]
  node_home["Home and overview<br/>[page.tsx]"]
  node_login["Login<br/>[page.tsx]"]
  node_signup["Registration<br/>[page.tsx]"]
  node_auth_actions["Auth actions<br/>[actions.ts]"]
  node_exercise_list["Exercise browser<br/>[page.tsx]"]
  node_exercise_detail["Exercise detail<br/>[page.tsx]"]
  node_exercise_actions["Exercise actions<br/>[actions.ts]"]
  node_exercise_client["Exercise API client"]
  node_muscle_client["Muscle group client"]
  node_user_log["Workout log<br/>[page.tsx]"]
  node_set_form["Sets and reps form"]
end

subgraph group_api["HTTP API"]
  node_auth_api["Authentication API<br/>[AuthController.cs]"]
  node_exercise_api["Exercise API"]
  node_muscle_api["Muscle group API"]
  node_log_api["User exercise API"]
end

subgraph group_services["Domain services"]
  node_auth_service["Authentication service<br/>[AuthService.cs]"]
  node_exercise_service["Exercise service<br/>[ExerciseService.cs]"]
  node_muscle_service["Muscle group service"]
  node_log_service["User exercise service"]
end

subgraph group_data["Persistence and models"]
  node_db_context["EF data context"]
  node_domain_models["Domain entities"]
end

node_user(("Workout user"))
node_sql[("SQL Server")]

node_user -.->|"uses"| node_home
node_user -.->|"authenticates"| node_login
node_user -.->|"registers"| node_signup
node_user -.->|"browses"| node_exercise_list
node_user -.->|"views"| node_exercise_detail
node_user -.->|"reviews logs"| node_user_log
node_user -.->|"enters sets"| node_set_form
node_auth_api -->|"delegates to"| node_auth_service
node_exercise_api -->|"delegates to"| node_exercise_service
node_muscle_api -->|"delegates to"| node_muscle_service
node_log_api -->|"delegates to"| node_log_service
node_auth_service -->|"queries and saves"| node_db_context
node_exercise_service -->|"queries and saves"| node_db_context
node_muscle_service -->|"uses context"| node_db_context
node_log_service -->|"queries and saves"| node_db_context
node_db_context -->|"persists data"| node_sql
node_exercise_client -.->|"HTTP requests"| node_exercise_api
node_muscle_client -.->|"HTTP requests"| node_muscle_api
node_auth_actions -.->|"HTTP requests"| node_auth_api
node_exercise_actions -.->|"HTTP requests"| node_log_api

click node_home "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/page.tsx"
click node_login "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/login/page.tsx"
click node_signup "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/signup/page.tsx"
click node_auth_actions "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/modules/auth/actions.ts"
click node_exercise_list "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/exercises/page.tsx"
click node_exercise_detail "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/exercises/%5Bid%5D/page.tsx"
click node_exercise_actions "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/modules/exercise/actions.ts"
click node_exercise_client "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/services/exerciseServices.ts"
click node_muscle_client "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/services/muscleGroupServices.ts"
click node_user_log "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/user/page.tsx"
click node_set_form "https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/components/ExerciseSetsRepsForm.tsx"
click node_auth_api "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/AuthController.cs"
click node_exercise_api "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/ExercisesController.cs"
click node_muscle_api "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/MuscleGroupController.cs"
click node_log_api "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/UserExercisesController.cs"
click node_auth_service "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/Auth/AuthService.cs"
click node_exercise_service "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/Exercises/ExerciseService.cs"
click node_muscle_service "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/MuscleGroup/MuscleGroupService.cs"
click node_log_service "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/UserExercises/UserExerciseService.cs"
click node_db_context "https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Data/SetTrackerDbContext.cs"
click node_domain_models "https://github.com/hrishavshrestha007/settracker/tree/main/Backend/Models/Entities"

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_home,node_login,node_signup,node_auth_actions,node_exercise_list,node_exercise_detail,node_exercise_actions,node_exercise_client,node_muscle_client,node_user_log,node_set_form,node_user toneBlue
class node_auth_api,node_exercise_api,node_muscle_api,node_log_api,node_sql toneAmber
class node_auth_service,node_exercise_service,node_muscle_service,node_log_service toneMint
class node_db_context,node_domain_models toneRose
```

## Components

### User interface

- [Home and overview](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/page.tsx): `Frontend/app/page.tsx`
- [Login](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/login/page.tsx): `Frontend/app/login/page.tsx`
- [Registration](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/signup/page.tsx): `Frontend/app/signup/page.tsx`
- [Auth actions](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/modules/auth/actions.ts): `Frontend/modules/auth/actions.ts`
- [Exercise browser](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/exercises/page.tsx): `Frontend/app/exercises/page.tsx`
- [Exercise detail](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/exercises/%5Bid%5D/page.tsx): `Frontend/app/exercises/[id]/page.tsx`
- [Exercise actions](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/modules/exercise/actions.ts): `Frontend/modules/exercise/actions.ts`
- [Exercise API client](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/services/exerciseServices.ts): `Frontend/services/exerciseServices.ts`
- [Muscle group client](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/services/muscleGroupServices.ts): `Frontend/services/muscleGroupServices.ts`
- [Workout log](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/app/user/page.tsx): `Frontend/app/user/page.tsx`
- [Sets and reps form](https://github.com/hrishavshrestha007/settracker/blob/main/Frontend/components/ExerciseSetsRepsForm.tsx): `Frontend/components/ExerciseSetsRepsForm.tsx`

### HTTP API

- [Authentication API](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/AuthController.cs): `Backend/Controllers/AuthController.cs`
- [Exercise API](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/ExercisesController.cs): `Backend/Controllers/ExercisesController.cs`
- [Muscle group API](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/MuscleGroupController.cs): `Backend/Controllers/MuscleGroupController.cs`
- [User exercise API](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Controllers/UserExercisesController.cs): `Backend/Controllers/UserExercisesController.cs`

### Domain services

- [Authentication service](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/Auth/AuthService.cs): `Backend/Services/Auth/AuthService.cs`
- [Exercise service](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/Exercises/ExerciseService.cs): `Backend/Services/Exercises/ExerciseService.cs`
- [Muscle group service](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/MuscleGroup/MuscleGroupService.cs): `Backend/Services/MuscleGroup/MuscleGroupService.cs`
- [User exercise service](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Services/UserExercises/UserExerciseService.cs): `Backend/Services/UserExercises/UserExerciseService.cs`

### Persistence and models

- [EF data context](https://github.com/hrishavshrestha007/settracker/blob/main/Backend/Data/SetTrackerDbContext.cs): `Backend/Data/SetTrackerDbContext.cs`
- [Domain entities](https://github.com/hrishavshrestha007/settracker/tree/main/Backend/Models/Entities): `Backend/Models/Entities`

### Other components

- **Workout user**
- **SQL Server**

## Connections

- Workout user → Home and overview: uses
- Workout user → Login: authenticates
- Workout user → Registration: registers
- Workout user → Exercise browser: browses
- Workout user → Exercise detail: views
- Workout user → Workout log: reviews logs
- Workout user → Sets and reps form: enters sets
- Authentication API → Authentication service: delegates to (evidence: `Backend/Controllers/AuthController.cs`)
- Exercise API → Exercise service: delegates to (evidence: `Backend/Controllers/ExercisesController.cs`)
- Muscle group API → Muscle group service: delegates to (evidence: `Backend/Controllers/MuscleGroupController.cs`)
- User exercise API → User exercise service: delegates to (evidence: `Backend/Controllers/UserExercisesController.cs`)
- Authentication service → EF data context: queries and saves (evidence: `Backend/Services/Auth/AuthService.cs`)
- Exercise service → EF data context: queries and saves (evidence: `Backend/Services/Exercises/ExerciseService.cs`)
- Muscle group service → EF data context: uses context (evidence: `Backend/Services/MuscleGroup/MuscleGroupService.cs`)
- User exercise service → EF data context: queries and saves (evidence: `Backend/Services/UserExercises/UserExerciseService.cs`)
- EF data context → SQL Server: persists data
- Exercise API client → Exercise API: HTTP requests
- Muscle group client → Muscle group API: HTTP requests
- Auth actions → Authentication API: HTTP requests
- Exercise actions → User exercise API: HTTP requests
