# fahim-muntasir/workout-tracker architecture

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

- Interactive diagram: https://gitdiagram.com/fahim-muntasir/workout-tracker
- Repository: https://github.com/fahim-muntasir/workout-tracker

## Overview

This is a React workout-tracking application, inferred from its routes and workout/exercise features; the README is only a generic Vite template. The main flow is account creation or sign-in, access to protected workout and exercise screens, then recording or editing entries; a dashboard chart summarizes recent workout duration. Sampled code shows form/API behavior and chart data retrieval, but not the implementations of the listing and dashboard pages, so their internal wiring is left unspecified.

Main entry points: [`src/App.jsx`](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/App.jsx) (Route map), [`src/instance/axios.js`](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/instance/axios.js) (HTTP client), [`src/pages/Signin.jsx`](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signin.jsx) (Sign in), [`src/pages/Signup.jsx`](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signup.jsx) (Sign up)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["App routing"]
  node_app["Route map<br/>[App.jsx]"]
  node_authguard["Private route<br/>[PrivateRoute.jsx]"]
  node_publicguard["Public route<br/>[PublicRoute.jsx]"]
end

subgraph group_accounts["Accounts and access"]
  node_signin["Sign in<br/>[Signin.jsx]"]
  node_signup["Sign up<br/>[Signup.jsx]"]
  node_auth["Auth state<br/>[AuthProvider.jsx]"]
end

subgraph group_training["Workout and exercise records"]
  node_workouts["Workout list<br/>[Workouts.jsx]"]
  node_workoutform["Workout editor<br/>[AddWorkout.jsx]"]
  node_exercises["Exercise list<br/>[Exercise.jsx]"]
  node_exerciseform["Exercise editor<br/>[AddExercise.jsx]"]
  node_httpclient["HTTP client<br/>[axios.js]"]
end

subgraph group_presentation["Dashboard and layout"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_durationchart["Duration chart<br/>[workoutChart.jsx]"]
  node_layout["App layout<br/>[Layout.jsx]"]
end

node_user(("User"))
node_api{{"API service"}}

node_user -->|"opens routes"| node_app
node_app -->|"routes auth"| node_publicguard
node_app -->|"routes protected"| node_authguard
node_app -->|"routes to"| node_signin
node_app -->|"routes to"| node_signup
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_workouts
node_app -->|"routes to"| node_workoutform
node_app -->|"routes to"| node_exercises
node_app -->|"routes to"| node_exerciseform
node_signin -->|"uses login"| node_auth
node_auth -->|"posts sign-in"| node_api
node_signup -->|"creates account"| node_api
node_workoutform -->|"requests records"| node_httpclient
node_exerciseform -->|"requests records"| node_httpclient
node_durationchart -->|"fetches workouts"| node_httpclient
node_httpclient -->|"sends requests"| node_api
node_dashboard -.->|"renders chart"| node_durationchart

click node_app "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/App.jsx"
click node_authguard "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/PrivateRoute.jsx"
click node_publicguard "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/PublicRoute.jsx"
click node_signin "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signin.jsx"
click node_signup "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signup.jsx"
click node_auth "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/context/AuthProvider.jsx"
click node_workouts "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Workouts.jsx"
click node_workoutform "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/AddWorkout.jsx"
click node_exercises "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Exercise.jsx"
click node_exerciseform "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/AddExercise.jsx"
click node_dashboard "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Dashboard.jsx"
click node_durationchart "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/workoutChart.jsx"
click node_layout "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/Layout.jsx"
click node_httpclient "https://github.com/fahim-muntasir/workout-tracker/blob/master/src/instance/axios.js"

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_app,node_authguard,node_publicguard,node_user toneBlue
class node_signin,node_signup,node_auth toneAmber
class node_workouts,node_workoutform,node_exercises,node_exerciseform,node_httpclient,node_api toneMint
class node_dashboard,node_durationchart,node_layout toneRose
```

## Components

### App routing

- [Route map](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/App.jsx): `src/App.jsx`
- [Private route](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/PrivateRoute.jsx): `src/components/PrivateRoute.jsx`
- [Public route](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/PublicRoute.jsx): `src/components/PublicRoute.jsx`

### Accounts and access

- [Sign in](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signin.jsx): `src/pages/Signin.jsx`
- [Sign up](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Signup.jsx): `src/pages/Signup.jsx`
- [Auth state](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/context/AuthProvider.jsx): `src/context/AuthProvider.jsx`

### Workout and exercise records

- [Workout list](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Workouts.jsx): `src/pages/Workouts.jsx`
- [Workout editor](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/AddWorkout.jsx): `src/pages/AddWorkout.jsx`
- [Exercise list](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Exercise.jsx): `src/pages/Exercise.jsx`
- [Exercise editor](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/AddExercise.jsx): `src/pages/AddExercise.jsx`
- [HTTP client](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/instance/axios.js): `src/instance/axios.js`

### Dashboard and layout

- [Dashboard](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Duration chart](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/workoutChart.jsx): `src/components/workoutChart.jsx`
- [App layout](https://github.com/fahim-muntasir/workout-tracker/blob/master/src/components/Layout.jsx): `src/components/Layout.jsx`

### Other components

- **User**
- **API service**

## Connections

- User → Route map: opens routes
- Route map → Public route: routes auth
- Route map → Private route: routes protected
- Route map → Sign in: routes to
- Route map → Sign up: routes to
- Route map → Dashboard: routes to
- Route map → Workout list: routes to
- Route map → Workout editor: routes to
- Route map → Exercise list: routes to
- Route map → Exercise editor: routes to
- Sign in → Auth state: uses login
- Auth state → API service: posts sign-in
- Sign up → API service: creates account
- Workout editor → HTTP client: requests records
- Exercise editor → HTTP client: requests records
- Duration chart → HTTP client: fetches workouts
- HTTP client → API service: sends requests
- Dashboard → Duration chart: renders chart
