# himanshu-bhadu/fitlife---fitness-tracker architecture

> Architecture diagram of the GitHub repository himanshu-bhadu/fitlife---fitness-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/himanshu-bhadu/fitlife---fitness-tracker
- Repository: https://github.com/himanshu-bhadu/fitlife---fitness-tracker

## Overview

FitLife is a fitness and nutrition tracker. Users authenticate, record meals and workouts, then review daily summaries and longer-term progress; a separate AI coach provides personalized advice. The graph follows the visible React routing and Express setup, and the sampled nutrition, workout, dashboard, and authentication controller flows. Other major capabilities are represented using paths in the tree, but their internal wiring is not inferred where source excerpts were unavailable.

Main entry points: [`client/src/App.jsx`](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/App.jsx) (Page router), [`client/src/api/axios.js`](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/api/axios.js) (HTTP client), [`server/index.js`](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/index.js) (Express application), [`server/middleware/auth.middleware.js`](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/middleware/auth.middleware.js) (JWT verification)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["Page router<br/>[App.jsx]"]
  node_login["Sign in<br/>[LoginPage.jsx]"]
  node_register["Registration<br/>[RegisterPage.jsx]"]
  node_dashboard_page["Dashboard view<br/>[DashboardPage.jsx]"]
  node_workout_page["Workout logging<br/>[WorkoutPages.jsx]"]
  node_nutrition_page["Nutrition logging<br/>[NutritionPage.jsx]"]
  node_profile_page["Profile settings<br/>[ProfilePage.jsx]"]
  node_progress_page["Progress charts<br/>[ProgressPage.jsx]"]
  node_coach_page["AI coach chat<br/>[AITrainerPage.jsx]"]
  node_api_client["HTTP client<br/>[axios.js]"]
end

subgraph group_api["API and identity"]
  node_server["Express application<br/>[index.js]"]
  node_auth_routes["Authentication routes<br/>[authroutes.js]"]
  node_auth_controller["Account and recovery<br/>[authcontroller.js]"]
  node_user_routes["User routes<br/>[userroutes.js]"]
  node_user_controller["User management<br/>[usercontroller.js]"]
  node_auth_middleware["JWT verification<br/>[auth.middleware.js]"]
  node_user_model["User records<br/>[usermodel.js]"]
end

subgraph group_tracking["Health tracking"]
  node_nutrition_routes["Nutrition routes<br/>[nutritionroutes.js]"]
  node_nutrition_controller["Nutrition tracking"]
  node_nutrition_model["Nutrition records<br/>[nutritionmodel.js]"]
  node_nutrition_service["Food search service"]
  node_workout_routes["Workout routes<br/>[workoutroutes.js]"]
  node_workout_controller["Workout tracking"]
  node_workout_model["Workout records<br/>[workoutmodel.js]"]
  node_workout_service["Calorie estimation"]
end

subgraph group_insights["Coaching and insights"]
  node_dashboard_routes["Dashboard routes<br/>[dashboardroute.js]"]
  node_dashboard_controller["Dashboard analytics"]
  node_ai_routes["AI routes<br/>[airoutes.js]"]
  node_ai_controller["AI coaching<br/>[aicontroller.js]"]
  node_ai_service["Coach response service<br/>[groq.service.js]"]
end

node_user(("Fitness user"))
node_email["Email delivery"]
node_fatsecret["Nutritionix API<br/>external service"]
node_api_ninjas["API Ninjas<br/>external service"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_register
node_app -->|"routes to"| node_dashboard_page
node_app -->|"routes to"| node_workout_page
node_app -->|"routes to"| node_nutrition_page
node_app -->|"routes to"| node_profile_page
node_app -->|"routes to"| node_progress_page
node_app -->|"routes to"| node_coach_page
node_login -->|"requests"| node_api_client
node_register -->|"requests"| node_api_client
node_dashboard_page -->|"requests"| node_api_client
node_workout_page -->|"requests"| node_api_client
node_nutrition_page -->|"requests"| node_api_client
node_profile_page -->|"requests"| node_api_client
node_progress_page -->|"requests"| node_api_client
node_coach_page -->|"requests"| node_api_client
node_api_client -->|"HTTP requests"| node_server
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_nutrition_routes
node_server -->|"mounts"| node_workout_routes
node_server -->|"mounts"| node_dashboard_routes
node_server -->|"mounts"| node_ai_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"reads and writes"| node_user_model
node_auth_controller -.->|"sends reset link"| node_email
node_user_routes -->|"protects routes"| node_auth_middleware
node_user_routes -->|"dispatches"| node_user_controller
node_user_controller -->|"reads and writes"| node_user_model
node_nutrition_routes -->|"protects routes"| node_auth_middleware
node_nutrition_routes -->|"dispatches"| node_nutrition_controller
node_nutrition_controller -->|"reads and writes"| node_nutrition_model
node_nutrition_controller -->|"searches food"| node_nutrition_service
node_nutrition_service -.->|"queries food data"| node_fatsecret
node_workout_routes -->|"protects routes"| node_auth_middleware
node_workout_routes -->|"dispatches"| node_workout_controller
node_workout_controller -->|"reads and writes"| node_workout_model
node_workout_controller -->|"estimates burn"| node_workout_service
node_workout_service -.->|"requests estimate"| node_api_ninjas
node_dashboard_routes -->|"protects routes"| node_auth_middleware
node_dashboard_routes -->|"dispatches"| node_dashboard_controller
node_dashboard_controller -->|"reads totals"| node_nutrition_model
node_dashboard_controller -->|"reads totals"| node_workout_model
node_ai_routes -->|"protects routes"| node_auth_middleware
node_ai_routes -->|"dispatches"| node_ai_controller
node_ai_controller -->|"requests advice"| node_ai_service

click node_app "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/App.jsx"
click node_login "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/LoginPage.jsx"
click node_register "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/RegisterPage.jsx"
click node_dashboard_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/DashboardPage.jsx"
click node_workout_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/WorkoutPages.jsx"
click node_nutrition_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/NutritionPage.jsx"
click node_profile_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/ProfilePage.jsx"
click node_progress_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/ProgressPage.jsx"
click node_coach_page "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/AITrainerPage.jsx"
click node_api_client "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/api/axios.js"
click node_server "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/index.js"
click node_auth_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/authroutes.js"
click node_auth_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/authcontroller.js"
click node_user_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/userroutes.js"
click node_user_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/usercontroller.js"
click node_auth_middleware "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/middleware/auth.middleware.js"
click node_user_model "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/usermodel.js"
click node_nutrition_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/nutritionroutes.js"
click node_nutrition_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/nutritioncontroller.js"
click node_nutrition_model "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/nutritionmodel.js"
click node_nutrition_service "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/nutritionix.service.js"
click node_workout_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/workoutroutes.js"
click node_workout_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/workoutcontroller.js"
click node_workout_model "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/workoutmodel.js"
click node_workout_service "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/apininjas.service.js"
click node_dashboard_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/dashboardroute.js"
click node_dashboard_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/dashboardcontroller.js"
click node_ai_routes "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/airoutes.js"
click node_ai_controller "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/aicontroller.js"
click node_ai_service "https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/groq.service.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_login,node_register,node_dashboard_page,node_workout_page,node_nutrition_page,node_profile_page,node_progress_page,node_coach_page,node_api_client,node_user toneBlue
class node_server,node_auth_routes,node_auth_controller,node_user_routes,node_user_controller,node_auth_middleware,node_user_model toneAmber
class node_nutrition_routes,node_nutrition_controller,node_nutrition_model,node_nutrition_service,node_workout_routes,node_workout_controller,node_workout_model,node_workout_service,node_fatsecret,node_api_ninjas toneMint
class node_dashboard_routes,node_dashboard_controller,node_ai_routes,node_ai_controller,node_ai_service toneRose
class node_email toneIndigo
```

## Components

### Web application

- [Page router](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Sign in](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/LoginPage.jsx): `client/src/pages/LoginPage.jsx`
- [Registration](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/RegisterPage.jsx): `client/src/pages/RegisterPage.jsx`
- [Dashboard view](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/DashboardPage.jsx): `client/src/pages/DashboardPage.jsx`
- [Workout logging](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/WorkoutPages.jsx): `client/src/pages/WorkoutPages.jsx`
- [Nutrition logging](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/NutritionPage.jsx): `client/src/pages/NutritionPage.jsx`
- [Profile settings](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/ProfilePage.jsx): `client/src/pages/ProfilePage.jsx`
- [Progress charts](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/ProgressPage.jsx): `client/src/pages/ProgressPage.jsx`
- [AI coach chat](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/pages/AITrainerPage.jsx): `client/src/pages/AITrainerPage.jsx`
- [HTTP client](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/client/src/api/axios.js): `client/src/api/axios.js`

### API and identity

- [Express application](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/index.js): `server/index.js`
- [Authentication routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/authroutes.js): `server/routes/authroutes.js`
- [Account and recovery](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/authcontroller.js): `server/controllers/authcontroller.js`
- [User routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/userroutes.js): `server/routes/userroutes.js`
- [User management](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/usercontroller.js): `server/controllers/usercontroller.js`
- [JWT verification](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/middleware/auth.middleware.js): `server/middleware/auth.middleware.js`
- [User records](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/usermodel.js): `server/models/usermodel.js`

### Health tracking

- [Nutrition routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/nutritionroutes.js): `server/routes/nutritionroutes.js`
- [Nutrition tracking](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/nutritioncontroller.js): `server/controllers/nutritioncontroller.js`
- [Nutrition records](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/nutritionmodel.js): `server/models/nutritionmodel.js`
- [Food search service](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/nutritionix.service.js): `server/services/nutritionix.service.js`
- [Workout routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/workoutroutes.js): `server/routes/workoutroutes.js`
- [Workout tracking](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/workoutcontroller.js): `server/controllers/workoutcontroller.js`
- [Workout records](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/models/workoutmodel.js): `server/models/workoutmodel.js`
- [Calorie estimation](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/apininjas.service.js): `server/services/apininjas.service.js`

### Coaching and insights

- [Dashboard routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/dashboardroute.js): `server/routes/dashboardroute.js`
- [Dashboard analytics](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/dashboardcontroller.js): `server/controllers/dashboardcontroller.js`
- [AI routes](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/routes/airoutes.js): `server/routes/airoutes.js`
- [AI coaching](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/controllers/aicontroller.js): `server/controllers/aicontroller.js`
- [Coach response service](https://github.com/himanshu-bhadu/fitlife---fitness-tracker/blob/main/server/services/groq.service.js): `server/services/groq.service.js`

### Other components

- **Fitness user**
- **Email delivery**
- **Nutritionix API**: external service
- **API Ninjas**: external service

## Connections

- Fitness user → Page router: uses
- Page router → Sign in: routes to
- Page router → Registration: routes to
- Page router → Dashboard view: routes to
- Page router → Workout logging: routes to
- Page router → Nutrition logging: routes to
- Page router → Profile settings: routes to
- Page router → Progress charts: routes to
- Page router → AI coach chat: routes to
- Sign in → HTTP client: requests
- Registration → HTTP client: requests
- Dashboard view → HTTP client: requests
- Workout logging → HTTP client: requests
- Nutrition logging → HTTP client: requests
- Profile settings → HTTP client: requests
- Progress charts → HTTP client: requests
- AI coach chat → HTTP client: requests
- HTTP client → Express application: HTTP requests
- Express application → Authentication routes: mounts
- Express application → User routes: mounts
- Express application → Nutrition routes: mounts
- Express application → Workout routes: mounts
- Express application → Dashboard routes: mounts
- Express application → AI routes: mounts
- Authentication routes → Account and recovery: dispatches
- Account and recovery → User records: reads and writes
- Account and recovery → Email delivery: sends reset link
- User routes → JWT verification: protects routes
- User routes → User management: dispatches
- User management → User records: reads and writes
- Nutrition routes → JWT verification: protects routes
- Nutrition routes → Nutrition tracking: dispatches
- Nutrition tracking → Nutrition records: reads and writes
- Nutrition tracking → Food search service: searches food
- Food search service → Nutritionix API: queries food data
- Workout routes → JWT verification: protects routes
- Workout routes → Workout tracking: dispatches
- Workout tracking → Workout records: reads and writes
- Workout tracking → Calorie estimation: estimates burn
- Calorie estimation → API Ninjas: requests estimate
- Dashboard routes → JWT verification: protects routes
- Dashboard routes → Dashboard analytics: dispatches
- Dashboard analytics → Nutrition records: reads totals
- Dashboard analytics → Workout records: reads totals
- AI routes → JWT verification: protects routes
- AI routes → AI coaching: dispatches
- AI coaching → Coach response service: requests advice
