# achintxv/nutrisculpt architecture

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

- Interactive diagram: https://gitdiagram.com/achintxv/nutrisculpt
- Repository: https://github.com/achintxv/nutrisculpt

## Overview

NutriSculpt is a full-stack fitness and nutrition planner. The principal workflow is user registration and login, profile setup, AI generation of workout and meal plans, persistence, then dashboard selection and editing. The graph preserves authentication, profile, plan-generation, saved-plan management, and dashboard capabilities documented in the README. Source excerpts show key backend services and API wiring; some route and frontend request details are represented only by README statements, so those edges cite the README.

Main entry points: [`backend/app/core/database.py`](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/core/database.py) (Database sessions), [`backend/app/main.py`](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/main.py) (FastAPI application), [`frontend/src/lib/api.js`](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/lib/api.js) (HTTP API client), [`backend/app/api/auth.py`](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/auth.py) (Authentication routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_auth_ui["Login and registration<br/>[page.jsx]"]
  node_profile_ui["Profile editor<br/>[page.jsx]"]
  node_dashboard["Fitness dashboard<br/>[page.jsx]"]
  node_workout_ui["Workout section<br/>[WorkoutSection.jsx]"]
  node_meal_ui["Meal section<br/>[MealSection.jsx]"]
  node_api_client["HTTP API client<br/>[api.js]"]
end

subgraph group_api["Backend API"]
  node_app_entry["FastAPI application<br/>[main.py]"]
  node_auth_api["Authentication routes<br/>[auth.py]"]
  node_user_api["User routes<br/>[users.py]"]
  node_profile_api["Profile routes<br/>[profiles.py]"]
  node_workout_api["Workout routes<br/>[workouts.py]"]
  node_meal_api["Meal routes<br/>[meals.py]"]
end

subgraph group_planning["Plan generation"]
  node_plan_api["Plan generation route<br/>[plans.py]"]
  node_ai_service["AI plan generator<br/>[ai_service.py]"]
  node_plan_service["Plan persistence<br/>[plan_service.py]"]
end

subgraph group_domain["Fitness data"]
  node_profile_model["Fitness profile<br/>[profile.py]"]
  node_workout_model["Workout plans<br/>[workout.py]"]
  node_meal_model["Meal plans<br/>[meal.py]"]
  node_user_model["User accounts<br/>[user.py]"]
end

subgraph group_runtime["Runtime infrastructure"]
  node_db_session["Database sessions<br/>[database.py]"]
  node_security["JWT security<br/>[security.py]"]
end

node_user(("Fitness user"))
node_postgres[("PostgreSQL")]
node_gemini{{"Google Gemini"}}

node_user -->|"registers or logs in"| node_auth_ui
node_auth_ui -->|"sends credentials"| node_api_client
node_profile_ui -->|"updates profile"| node_api_client
node_dashboard -->|"loads dashboard"| node_api_client
node_dashboard -->|"renders"| node_workout_ui
node_dashboard -->|"renders"| node_meal_ui
node_workout_ui -->|"manages workouts"| node_api_client
node_meal_ui -->|"manages meals"| node_api_client
node_api_client -->|"HTTP JSON"| node_app_entry
node_app_entry -->|"registers router"| node_auth_api
node_app_entry -->|"registers router"| node_user_api
node_app_entry -->|"registers router"| node_profile_api
node_app_entry -->|"registers router"| node_plan_api
node_app_entry -->|"registers router"| node_workout_api
node_app_entry -->|"registers router"| node_meal_api
node_auth_api -->|"verifies and issues JWT"| node_security
node_auth_api -->|"queries account"| node_user_model
node_profile_api -->|"reads and updates"| node_profile_model
node_user_api -->|"manages accounts"| node_user_model
node_plan_api -->|"requests recommendations"| node_ai_service
node_ai_service -->|"generates structured plan"| node_gemini
node_plan_api -->|"saves generated plans"| node_plan_service
node_plan_service -->|"creates workout records"| node_workout_model
node_plan_service -->|"creates meal records"| node_meal_model
node_ai_service -->|"uses profile details"| node_profile_model
node_workout_api -->|"manages saved plans"| node_workout_model
node_meal_api -->|"manages saved plans"| node_meal_model
node_profile_api -->|"uses session"| node_db_session
node_plan_api -->|"uses session"| node_db_session
node_workout_api -->|"uses session"| node_db_session
node_meal_api -->|"uses session"| node_db_session
node_user_api -->|"uses session"| node_db_session
node_auth_api -->|"uses session"| node_db_session
node_db_session -->|"queries and commits"| node_postgres
node_user_model -->|"maps account table"| node_db_session
node_profile_model -->|"maps profile table"| node_db_session
node_workout_model -->|"maps workout tables"| node_db_session
node_meal_model -->|"maps meal tables"| node_db_session

click node_auth_ui "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/login/page.jsx"
click node_profile_ui "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/profile/page.jsx"
click node_dashboard "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/page.jsx"
click node_workout_ui "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/WorkoutSection.jsx"
click node_meal_ui "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/MealSection.jsx"
click node_api_client "https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/lib/api.js"
click node_app_entry "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/main.py"
click node_auth_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/auth.py"
click node_user_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/users.py"
click node_profile_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/profiles.py"
click node_plan_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/plans.py"
click node_workout_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/workouts.py"
click node_meal_api "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/meals.py"
click node_ai_service "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/services/ai_service.py"
click node_plan_service "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/services/plan_service.py"
click node_profile_model "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/profile.py"
click node_workout_model "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/workout.py"
click node_meal_model "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/meal.py"
click node_user_model "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/user.py"
click node_db_session "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/core/database.py"
click node_security "https://github.com/achintxv/nutrisculpt/blob/master/backend/app/core/security.py"

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_auth_ui,node_profile_ui,node_dashboard,node_workout_ui,node_meal_ui,node_api_client,node_user toneBlue
class node_app_entry,node_auth_api,node_user_api,node_profile_api,node_workout_api,node_meal_api,node_postgres toneAmber
class node_plan_api,node_ai_service,node_plan_service toneMint
class node_profile_model,node_workout_model,node_meal_model,node_user_model toneRose
class node_db_session,node_security,node_gemini toneIndigo
```

## Components

### Web application

- [Login and registration](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/login/page.jsx): `frontend/src/app/login/page.jsx`
- [Profile editor](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/profile/page.jsx): `frontend/src/app/profile/page.jsx`
- [Fitness dashboard](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/page.jsx): `frontend/src/app/dashboard/page.jsx`
- [Workout section](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/WorkoutSection.jsx): `frontend/src/app/dashboard/WorkoutSection.jsx`
- [Meal section](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/app/dashboard/MealSection.jsx): `frontend/src/app/dashboard/MealSection.jsx`
- [HTTP API client](https://github.com/achintxv/nutrisculpt/blob/master/frontend/src/lib/api.js): `frontend/src/lib/api.js`

### Backend API

- [FastAPI application](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/main.py): `backend/app/main.py`
- [Authentication routes](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/auth.py): `backend/app/api/auth.py`
- [User routes](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/users.py): `backend/app/api/users.py`
- [Profile routes](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/profiles.py): `backend/app/api/profiles.py`
- [Workout routes](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/workouts.py): `backend/app/api/workouts.py`
- [Meal routes](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/meals.py): `backend/app/api/meals.py`

### Plan generation

- [Plan generation route](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/api/plans.py): `backend/app/api/plans.py`
- [AI plan generator](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/services/ai_service.py): `backend/app/services/ai_service.py`
- [Plan persistence](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/services/plan_service.py): `backend/app/services/plan_service.py`

### Fitness data

- [Fitness profile](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/profile.py): `backend/app/models/profile.py`
- [Workout plans](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/workout.py): `backend/app/models/workout.py`
- [Meal plans](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/meal.py): `backend/app/models/meal.py`
- [User accounts](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/models/user.py): `backend/app/models/user.py`

### Runtime infrastructure

- [Database sessions](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/core/database.py): `backend/app/core/database.py`
- [JWT security](https://github.com/achintxv/nutrisculpt/blob/master/backend/app/core/security.py): `backend/app/core/security.py`

### Other components

- **Fitness user**
- **PostgreSQL**
- **Google Gemini**

## Connections

- Fitness user → Login and registration: registers or logs in (evidence: `README.md`)
- Login and registration → HTTP API client: sends credentials (evidence: `frontend/src/app/login/page.jsx`)
- Profile editor → HTTP API client: updates profile (evidence: `README.md`)
- Fitness dashboard → HTTP API client: loads dashboard (evidence: `README.md`)
- Fitness dashboard → Workout section: renders (evidence: `frontend/src/app/dashboard/page.jsx`)
- Fitness dashboard → Meal section: renders (evidence: `frontend/src/app/dashboard/page.jsx`)
- Workout section → HTTP API client: manages workouts (evidence: `frontend/src/app/dashboard/WorkoutSection.jsx`)
- Meal section → HTTP API client: manages meals (evidence: `frontend/src/app/dashboard/MealSection.jsx`)
- HTTP API client → FastAPI application: HTTP JSON (evidence: `README.md`)
- FastAPI application → Authentication routes: registers router (evidence: `backend/app/main.py`)
- FastAPI application → User routes: registers router (evidence: `backend/app/main.py`)
- FastAPI application → Profile routes: registers router (evidence: `backend/app/main.py`)
- FastAPI application → Plan generation route: registers router (evidence: `backend/app/main.py`)
- FastAPI application → Workout routes: registers router (evidence: `backend/app/main.py`)
- FastAPI application → Meal routes: registers router (evidence: `backend/app/main.py`)
- Authentication routes → JWT security: verifies and issues JWT (evidence: `backend/app/api/auth.py`)
- Authentication routes → User accounts: queries account (evidence: `backend/app/api/auth.py`)
- Profile routes → Fitness profile: reads and updates (evidence: `backend/app/api/profiles.py`)
- User routes → User accounts: manages accounts (evidence: `backend/app/api/users.py`)
- Plan generation route → AI plan generator: requests recommendations (evidence: `backend/app/api/plans.py`)
- AI plan generator → Google Gemini: generates structured plan (evidence: `backend/app/services/ai_service.py`)
- Plan generation route → Plan persistence: saves generated plans (evidence: `backend/app/api/plans.py`)
- Plan persistence → Workout plans: creates workout records (evidence: `backend/app/services/plan_service.py`)
- Plan persistence → Meal plans: creates meal records (evidence: `backend/app/services/plan_service.py`)
- AI plan generator → Fitness profile: uses profile details (evidence: `backend/app/services/ai_service.py`)
- Workout routes → Workout plans: manages saved plans (evidence: `backend/app/api/workouts.py`)
- Meal routes → Meal plans: manages saved plans (evidence: `backend/app/api/meals.py`)
- Profile routes → Database sessions: uses session (evidence: `backend/app/api/profiles.py`)
- Plan generation route → Database sessions: uses session (evidence: `backend/app/api/plans.py`)
- Workout routes → Database sessions: uses session (evidence: `backend/app/api/workouts.py`)
- Meal routes → Database sessions: uses session (evidence: `backend/app/api/meals.py`)
- User routes → Database sessions: uses session (evidence: `backend/app/api/users.py`)
- Authentication routes → Database sessions: uses session (evidence: `backend/app/api/auth.py`)
- Database sessions → PostgreSQL: queries and commits (evidence: `backend/app/core/database.py`)
- User accounts → Database sessions: maps account table (evidence: `backend/app/models/user.py`)
- Fitness profile → Database sessions: maps profile table (evidence: `backend/app/models/profile.py`)
- Workout plans → Database sessions: maps workout tables (evidence: `backend/app/models/workout.py`)
- Meal plans → Database sessions: maps meal tables (evidence: `backend/app/models/meal.py`)
