# anshula-2006/nutriverse architecture

> Architecture diagram of the GitHub repository anshula-2006/nutriverse, 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/anshula-2006/nutriverse
- Repository: https://github.com/anshula-2006/nutriverse

## Overview

NutriVerse is a nutrition-tracking and food-guidance application. Users authenticate, maintain a nutrition profile, search foods and log meals or water, then review dashboard data or ask for chat-based guidance and recommendations. Food lookup retains source identity and retrieves exact records for meal logging; chat routes selected-food questions, recommendations, recipes and homemade-meal calculations through distinct backend services. The README documents MongoDB persistence and a read-only Neo4j food list, not graph-backed recommendations. Some controller/service and frontend/API wiring is represented from documented routes and component roles; unsampled implementation details are not asserted.

Main entry points: [`frontend/src/api.js`](https://github.com/anshula-2006/nutriverse/blob/main/frontend/src/api.js) (API client), [`backend/src/main/java/com/nutriverse/backend/service/NutritionLookupService.java`](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionLookupService.java) (Food lookup), [`backend/src/main/java/com/nutriverse/backend/service/GroqService.java`](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/GroqService.java) (Chat guidance), [`backend/src/main/java/com/nutriverse/backend/controller/ChatController.java`](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/ChatController.java) (Chat routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["User interface"]
  node_frontend["React app<br/>[App.jsx]"]
  node_frontend_api["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and profile"]
  node_auth_api["Auth routes"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_profile_api["Profile routes"]
  node_profile_service["Profile service"]
  node_profile_extract["Profile extraction"]
  node_targets["Daily targets"]
end

subgraph group_tracking["Nutrition tracking"]
  node_dashboard_api["Dashboard routes"]
  node_dashboard_service["Dashboard service"]
  node_nutrition_api["Nutrition routes"]
  node_nutrition_lookup["Food lookup"]
  node_usda["USDA provider"]
  node_off["Open Food Facts"]
  node_meal_service["Meal logging"]
  node_meal_api["Meal routes"]
  node_water_api["Water routes"]
  node_water_service["Water logging"]
end

subgraph group_guidance["Food guidance"]
  node_chat_api["Chat routes"]
  node_chat_groq["Chat guidance<br/>[GroqService.java]"]
  node_recommend["Recommendations"]
  node_composite["Meal estimates"]
  node_chat_memory["Chat memory<br/>[ChatMemory.java]"]
  node_neo4j_api["Knowledge graph routes"]
end

node_user(("User"))
node_mongo[("MongoDB")]
node_groq_ext["Groq API"]
node_neo4j[("Neo4j")]

node_user -->|"uses"| node_frontend
node_frontend -->|"requests"| node_frontend_api
node_frontend_api -->|"calls auth"| node_auth_api
node_frontend_api -->|"calls profile"| node_profile_api
node_frontend_api -->|"loads dashboard"| node_dashboard_api
node_frontend_api -->|"searches foods"| node_nutrition_api
node_frontend_api -->|"logs meals"| node_meal_api
node_frontend_api -->|"logs water"| node_water_api
node_frontend_api -->|"sends chat"| node_chat_api
node_auth_api -->|"reads/writes users"| node_mongo
node_auth_api -->|"issues tokens"| node_jwt
node_profile_api -->|"delegates"| node_profile_service
node_profile_service -->|"reads/writes profiles"| node_mongo
node_profile_service -->|"calculates targets"| node_targets
node_dashboard_api -->|"delegates"| node_dashboard_service
node_dashboard_service -->|"reads tracking data"| node_mongo
node_nutrition_api -->|"searches/retrieves"| node_nutrition_lookup
node_nutrition_api -->|"logs selected food"| node_meal_service
node_nutrition_lookup -->|"queries"| node_usda
node_nutrition_lookup -.->|"fallback lookup"| node_off
node_usda -.-> node_groq_ext
node_meal_service -->|"fetches exact record"| node_nutrition_lookup
node_meal_service -->|"stores meal"| node_mongo
node_meal_api -->|"persists meal logs"| node_mongo
node_water_api -->|"delegates"| node_water_service
node_water_service -->|"reads/writes water"| node_mongo
node_chat_api -->|"routes general chat"| node_chat_groq
node_chat_api -->|"routes followups"| node_recommend
node_chat_api -->|"routes meal estimates"| node_composite
node_chat_groq -->|"retrieves food facts"| node_nutrition_lookup
node_chat_groq -->|"extracts profile details"| node_profile_extract
node_chat_groq -->|"reads/writes history"| node_chat_memory
node_chat_groq -->|"requests completions"| node_groq_ext
node_recommend -->|"generates candidates"| node_chat_groq
node_recommend -->|"checks exact foods"| node_nutrition_lookup
node_recommend -->|"stores recommendations"| node_chat_memory
node_composite -->|"looks up ingredients"| node_nutrition_lookup
node_composite -->|"reads/writes context"| node_chat_memory
node_neo4j_api -->|"reads food nodes"| node_neo4j

click node_frontend "https://github.com/anshula-2006/nutriverse/blob/main/frontend/src/App.jsx"
click node_frontend_api "https://github.com/anshula-2006/nutriverse/blob/main/frontend/src/api.js"
click node_auth_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/AuthController.java"
click node_jwt "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/JwtService.java"
click node_profile_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/NutritionProfileController.java"
click node_profile_service "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionProfileService.java"
click node_profile_extract "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/ProfileExtractionService.java"
click node_targets "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/DailyTargetService.java"
click node_dashboard_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/DashboardController.java"
click node_dashboard_service "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/DashboardService.java"
click node_nutrition_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/NutritionController.java"
click node_nutrition_lookup "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionLookupService.java"
click node_usda "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/UsdaFoodDataProvider.java"
click node_off "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/OpenFoodFactsProvider.java"
click node_meal_service "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionMealService.java"
click node_meal_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/MealLogController.java"
click node_water_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/WaterLogController.java"
click node_water_service "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/WaterLogService.java"
click node_chat_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/ChatController.java"
click node_chat_groq "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/GroqService.java"
click node_recommend "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/RecommendationService.java"
click node_composite "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/CompositeMealService.java"
click node_chat_memory "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/ChatMemory.java"
click node_neo4j_api "https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/KnowledgeGraphController.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_frontend,node_frontend_api,node_user toneBlue
class node_auth_api,node_jwt,node_profile_api,node_profile_service,node_profile_extract,node_targets,node_mongo,node_neo4j toneAmber
class node_dashboard_api,node_dashboard_service,node_nutrition_api,node_nutrition_lookup,node_usda,node_off,node_meal_service,node_meal_api,node_water_api,node_water_service,node_groq_ext toneMint
class node_chat_api,node_chat_groq,node_recommend,node_composite,node_chat_memory,node_neo4j_api toneRose
```

## Components

### User interface

- [React app](https://github.com/anshula-2006/nutriverse/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [API client](https://github.com/anshula-2006/nutriverse/blob/main/frontend/src/api.js): `frontend/src/api.js`

### Identity and profile

- [Auth routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/AuthController.java): `backend/src/main/java/com/nutriverse/backend/controller/AuthController.java`
- [JWT service](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/JwtService.java): `backend/src/main/java/com/nutriverse/backend/service/JwtService.java`
- [Profile routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/NutritionProfileController.java): `backend/src/main/java/com/nutriverse/backend/controller/NutritionProfileController.java`
- [Profile service](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionProfileService.java): `backend/src/main/java/com/nutriverse/backend/service/NutritionProfileService.java`
- [Profile extraction](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/ProfileExtractionService.java): `backend/src/main/java/com/nutriverse/backend/service/ProfileExtractionService.java`
- [Daily targets](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/DailyTargetService.java): `backend/src/main/java/com/nutriverse/backend/service/DailyTargetService.java`

### Nutrition tracking

- [Dashboard routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/DashboardController.java): `backend/src/main/java/com/nutriverse/backend/controller/DashboardController.java`
- [Dashboard service](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/DashboardService.java): `backend/src/main/java/com/nutriverse/backend/service/DashboardService.java`
- [Nutrition routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/NutritionController.java): `backend/src/main/java/com/nutriverse/backend/controller/NutritionController.java`
- [Food lookup](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionLookupService.java): `backend/src/main/java/com/nutriverse/backend/service/NutritionLookupService.java`
- [USDA provider](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/UsdaFoodDataProvider.java): `backend/src/main/java/com/nutriverse/backend/service/UsdaFoodDataProvider.java`
- [Open Food Facts](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/OpenFoodFactsProvider.java): `backend/src/main/java/com/nutriverse/backend/service/OpenFoodFactsProvider.java`
- [Meal logging](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/NutritionMealService.java): `backend/src/main/java/com/nutriverse/backend/service/NutritionMealService.java`
- [Meal routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/MealLogController.java): `backend/src/main/java/com/nutriverse/backend/controller/MealLogController.java`
- [Water routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/WaterLogController.java): `backend/src/main/java/com/nutriverse/backend/controller/WaterLogController.java`
- [Water logging](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/WaterLogService.java): `backend/src/main/java/com/nutriverse/backend/service/WaterLogService.java`

### Food guidance

- [Chat routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/ChatController.java): `backend/src/main/java/com/nutriverse/backend/controller/ChatController.java`
- [Chat guidance](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/GroqService.java): `backend/src/main/java/com/nutriverse/backend/service/GroqService.java`
- [Recommendations](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/RecommendationService.java): `backend/src/main/java/com/nutriverse/backend/service/RecommendationService.java`
- [Meal estimates](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/CompositeMealService.java): `backend/src/main/java/com/nutriverse/backend/service/CompositeMealService.java`
- [Chat memory](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/service/ChatMemory.java): `backend/src/main/java/com/nutriverse/backend/service/ChatMemory.java`
- [Knowledge graph routes](https://github.com/anshula-2006/nutriverse/blob/main/backend/src/main/java/com/nutriverse/backend/controller/KnowledgeGraphController.java): `backend/src/main/java/com/nutriverse/backend/controller/KnowledgeGraphController.java`

### Other components

- **User**
- **MongoDB**
- **Groq API**
- **Neo4j**

## Connections

- User → React app: uses
- React app → API client: requests
- API client → Auth routes: calls auth
- API client → Profile routes: calls profile
- API client → Dashboard routes: loads dashboard
- API client → Nutrition routes: searches foods
- API client → Meal routes: logs meals
- API client → Water routes: logs water
- API client → Chat routes: sends chat
- Auth routes → MongoDB: reads/writes users
- Auth routes → JWT service: issues tokens
- Profile routes → Profile service: delegates
- Profile service → MongoDB: reads/writes profiles
- Profile service → Daily targets: calculates targets
- Dashboard routes → Dashboard service: delegates
- Dashboard service → MongoDB: reads tracking data
- Nutrition routes → Food lookup: searches/retrieves
- Nutrition routes → Meal logging: logs selected food
- Food lookup → USDA provider: queries
- Food lookup → Open Food Facts: fallback lookup
- USDA provider → Groq API
- Meal logging → Food lookup: fetches exact record
- Meal logging → MongoDB: stores meal
- Meal routes → MongoDB: persists meal logs
- Water routes → Water logging: delegates
- Water logging → MongoDB: reads/writes water
- Chat routes → Chat guidance: routes general chat
- Chat routes → Recommendations: routes followups
- Chat routes → Meal estimates: routes meal estimates
- Chat guidance → Food lookup: retrieves food facts
- Chat guidance → Profile extraction: extracts profile details
- Chat guidance → Chat memory: reads/writes history
- Chat guidance → Groq API: requests completions
- Recommendations → Chat guidance: generates candidates
- Recommendations → Food lookup: checks exact foods
- Recommendations → Chat memory: stores recommendations
- Meal estimates → Food lookup: looks up ingredients
- Meal estimates → Chat memory: reads/writes context
- Knowledge graph routes → Neo4j: reads food nodes
