# krishb404/nutrisync-ai architecture

> Architecture diagram of the GitHub repository krishb404/nutrisync-ai, 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/krishb404/nutrisync-ai
- Repository: https://github.com/krishb404/nutrisync-ai

## Overview

NutriSync AI is a health and nutrition tracking platform with a React dashboard and an Express/MongoDB API. Users enter through the frontend, view health metrics and tracking features, and can use backend authentication, food-image analysis, and clinician/admin workflows. The README documents predictions, nutrition audits, medicine reminders, and workouts, though several implementations were not sampled; those are represented at their exact enclosing directories. Edges are limited to relationships shown in excerpts, indexed references, or README statements.

Main entry points: [`index.js`](https://github.com/krishb404/nutrisync-ai/blob/main/index.js) (Express API), [`routes/admin.js`](https://github.com/krishb404/nutrisync-ai/blob/main/routes/admin.js) (Admin services), [`models/User.js`](https://github.com/krishb404/nutrisync-ai/blob/main/models/User.js) (User records), [`models/FoodLog.js`](https://github.com/krishb404/nutrisync-ai/blob/main/models/FoodLog.js) (Food log records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Health frontend"]
  node_app["React application<br/>[App.js]"]
  node_dashboard["Health dashboard"]
  node_authui["Sign-in UI"]
  node_datarequest["Fitness data requests"]
  node_theme["Theme context<br/>[ThemeContext.js]"]
end

subgraph group_tracking["Tracking features"]
  node_mealtracker["Meal tracker"]
  node_audit["Nutrition audit<br/>[index.js]"]
  node_predictions["AI predictions<br/>[index.js]"]
  node_medicines["Medicine tracker<br/>[index.js]"]
  node_workouts["Workout tracker"]
end

subgraph group_backend["API services"]
  node_api["Express API<br/>[index.js]"]
  node_authroutes["Authentication routes<br/>[auth.js]"]
  node_authmw["JWT authorization<br/>[auth.js]"]
  node_admin["Admin services<br/>[admin.js]"]
  node_doctor["Doctor services<br/>[doctor.js]"]
  node_foodroutes["Food log API<br/>[food.js]"]
  node_analyzer["Image food analysis<br/>[index.js]"]
end

subgraph group_data["Persistence"]
  node_users[("User records<br/>[User.js]")]
  node_foodlogs[("Food log records<br/>[FoodLog.js]")]
  node_usage[("API usage records<br/>[ApiUsage.js]")]
end

node_user(("User"))
node_fitness["Google Fitness API"]
node_groq["Groq vision model"]
node_mongodb[("MongoDB")]
node_twilio["Twilio WhatsApp"]

node_user -->|"opens"| node_app
node_app -->|"presents"| node_dashboard
node_app -->|"offers login"| node_authui
node_dashboard -.->|"requests metrics"| node_datarequest
node_datarequest -->|"fetches aggregates"| node_fitness
node_user -->|"logs meals"| node_mealtracker
node_user -->|"reviews nutrition"| node_audit
node_user -->|"views insights"| node_predictions
node_user -->|"sets reminders"| node_medicines
node_user -->|"logs workouts"| node_workouts
node_user -->|"sends requests"| node_api
node_api -->|"mounts"| node_authroutes
node_api -->|"mounts"| node_admin
node_api -->|"mounts"| node_doctor
node_api -->|"mounts"| node_foodroutes
node_authroutes -->|"reads and writes"| node_users
node_authroutes -->|"uses token tools"| node_authmw
node_authmw -->|"loads user"| node_users
node_admin -->|"requires roles"| node_authmw
node_admin -->|"manages users"| node_users
node_admin -->|"manages logs"| node_foodlogs
node_admin -->|"queries usage"| node_usage
node_doctor -->|"uses patient records"| node_users
node_doctor -->|"uses food logs"| node_foodlogs
node_foodroutes -->|"uses food logs"| node_foodlogs
node_api -->|"handles image analysis"| node_analyzer
node_analyzer -->|"requests vision analysis"| node_groq
node_analyzer -->|"persists recognized meal"| node_foodlogs
node_analyzer -->|"records API usage"| node_usage
node_api -->|"connects"| node_mongodb
node_api -->|"sends reminders"| node_twilio

click node_app "https://github.com/krishb404/nutrisync-ai/blob/main/src/App.js"
click node_dashboard "https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/dashboard"
click node_authui "https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/authentication"
click node_mealtracker "https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/tables"
click node_audit "https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/nutritional-audit/index.js"
click node_predictions "https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/ai-predictions/index.js"
click node_medicines "https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/tables2/index.js"
click node_workouts "https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/billing/compo"
click node_datarequest "https://github.com/krishb404/nutrisync-ai/blob/main/src/Utility/DataRequestManager.js"
click node_theme "https://github.com/krishb404/nutrisync-ai/blob/main/src/context/ThemeContext.js"
click node_api "https://github.com/krishb404/nutrisync-ai/blob/main/index.js"
click node_authroutes "https://github.com/krishb404/nutrisync-ai/blob/main/routes/auth.js"
click node_authmw "https://github.com/krishb404/nutrisync-ai/blob/main/middleware/auth.js"
click node_admin "https://github.com/krishb404/nutrisync-ai/blob/main/routes/admin.js"
click node_doctor "https://github.com/krishb404/nutrisync-ai/blob/main/routes/doctor.js"
click node_foodroutes "https://github.com/krishb404/nutrisync-ai/blob/main/routes/food.js"
click node_analyzer "https://github.com/krishb404/nutrisync-ai/blob/main/index.js"
click node_users "https://github.com/krishb404/nutrisync-ai/blob/main/models/User.js"
click node_foodlogs "https://github.com/krishb404/nutrisync-ai/blob/main/models/FoodLog.js"
click node_usage "https://github.com/krishb404/nutrisync-ai/blob/main/models/ApiUsage.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_dashboard,node_authui,node_datarequest,node_theme,node_user toneBlue
class node_mealtracker,node_audit,node_predictions,node_medicines,node_workouts,node_mongodb toneAmber
class node_api,node_authroutes,node_authmw,node_admin,node_doctor,node_foodroutes,node_analyzer,node_fitness toneMint
class node_users,node_foodlogs,node_usage toneRose
class node_groq,node_twilio toneIndigo
```

## Components

### Health frontend

- [React application](https://github.com/krishb404/nutrisync-ai/blob/main/src/App.js): `src/App.js`
- [Health dashboard](https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/dashboard): `src/layouts/dashboard`
- [Sign-in UI](https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/authentication): `src/layouts/authentication`
- [Fitness data requests](https://github.com/krishb404/nutrisync-ai/blob/main/src/Utility/DataRequestManager.js): `src/Utility/DataRequestManager.js`
- [Theme context](https://github.com/krishb404/nutrisync-ai/blob/main/src/context/ThemeContext.js): `src/context/ThemeContext.js`

### Tracking features

- [Meal tracker](https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/tables): `src/layouts/tables`
- [Nutrition audit](https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/nutritional-audit/index.js): `src/layouts/nutritional-audit/index.js`
- [AI predictions](https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/ai-predictions/index.js): `src/layouts/ai-predictions/index.js`
- [Medicine tracker](https://github.com/krishb404/nutrisync-ai/blob/main/src/layouts/tables2/index.js): `src/layouts/tables2/index.js`
- [Workout tracker](https://github.com/krishb404/nutrisync-ai/tree/main/src/layouts/billing/compo): `src/layouts/billing/compo`

### API services

- [Express API](https://github.com/krishb404/nutrisync-ai/blob/main/index.js): `index.js`
- [Authentication routes](https://github.com/krishb404/nutrisync-ai/blob/main/routes/auth.js): `routes/auth.js`
- [JWT authorization](https://github.com/krishb404/nutrisync-ai/blob/main/middleware/auth.js): `middleware/auth.js`
- [Admin services](https://github.com/krishb404/nutrisync-ai/blob/main/routes/admin.js): `routes/admin.js`
- [Doctor services](https://github.com/krishb404/nutrisync-ai/blob/main/routes/doctor.js): `routes/doctor.js`
- [Food log API](https://github.com/krishb404/nutrisync-ai/blob/main/routes/food.js): `routes/food.js`
- [Image food analysis](https://github.com/krishb404/nutrisync-ai/blob/main/index.js): `index.js`

### Persistence

- [User records](https://github.com/krishb404/nutrisync-ai/blob/main/models/User.js): `models/User.js`
- [Food log records](https://github.com/krishb404/nutrisync-ai/blob/main/models/FoodLog.js): `models/FoodLog.js`
- [API usage records](https://github.com/krishb404/nutrisync-ai/blob/main/models/ApiUsage.js): `models/ApiUsage.js`

### Other components

- **User**
- **Google Fitness API**
- **Groq vision model**
- **MongoDB**
- **Twilio WhatsApp**

## Connections

- User → React application: opens
- React application → Health dashboard: presents
- React application → Sign-in UI: offers login
- Health dashboard → Fitness data requests: requests metrics
- Fitness data requests → Google Fitness API: fetches aggregates (evidence: `src/Utility/DataRequestManager.js`)
- User → Meal tracker: logs meals
- User → Nutrition audit: reviews nutrition
- User → AI predictions: views insights
- User → Medicine tracker: sets reminders
- User → Workout tracker: logs workouts
- User → Express API: sends requests
- Express API → Authentication routes: mounts (evidence: `index.js`)
- Express API → Admin services: mounts (evidence: `index.js`)
- Express API → Doctor services: mounts (evidence: `index.js`)
- Express API → Food log API: mounts (evidence: `index.js`)
- Authentication routes → User records: reads and writes (evidence: `routes/auth.js`)
- Authentication routes → JWT authorization: uses token tools (evidence: `routes/auth.js`)
- JWT authorization → User records: loads user (evidence: `middleware/auth.js`)
- Admin services → JWT authorization: requires roles (evidence: `routes/admin.js`)
- Admin services → User records: manages users (evidence: `routes/admin.js`)
- Admin services → Food log records: manages logs (evidence: `routes/admin.js`)
- Admin services → API usage records: queries usage (evidence: `routes/admin.js`)
- Doctor services → User records: uses patient records (evidence: `routes/doctor.js`)
- Doctor services → Food log records: uses food logs (evidence: `routes/doctor.js`)
- Food log API → Food log records: uses food logs (evidence: `routes/food.js`)
- Express API → Image food analysis: handles image analysis (evidence: `index.js`)
- Image food analysis → Groq vision model: requests vision analysis (evidence: `index.js`)
- Image food analysis → Food log records: persists recognized meal (evidence: `index.js`)
- Image food analysis → API usage records: records API usage (evidence: `index.js`)
- Express API → MongoDB: connects (evidence: `index.js`)
- Express API → Twilio WhatsApp: sends reminders (evidence: `index.js`)
