# yukitte/nutrilife architecture

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

- Interactive diagram: https://gitdiagram.com/yukitte/nutrilife
- Repository: https://github.com/yukitte/nutrilife

## Overview

NutriLife is a web platform for patients and nutritionists. Patients register or sign in, discover professionals, check availability, reserve consultations, and access personalized food plans; nutritionists manage profiles, schedules, patients, appointments, and plans, with payment confirmation handled manually. The frontend uses a FastAPI backend backed by MongoDB. The graph includes documented capabilities and substantial core modules; some router and CRUD links are supported by the SOURCE INDEX rather than inspected excerpts, and unsampled implementation details are not inferred.

Main entry points: [`backend/main.py`](https://github.com/yukitte/nutrilife/blob/main/backend/main.py) (FastAPI application), [`backend/routers/auth_router.py`](https://github.com/yukitte/nutrilife/blob/main/backend/routers/auth_router.py) (Registration and login), [`backend/database/connection.py`](https://github.com/yukitte/nutrilife/blob/main/backend/database/connection.py) (MongoDB connection), [`backend/routers/usuario_router.py`](https://github.com/yukitte/nutrilife/blob/main/backend/routers/usuario_router.py) (Profiles and discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_frontend["Web application<br/>[app.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["API and identity"]
  node_fastapi["FastAPI application<br/>[main.py]"]
  node_identity_routes["Registration and login<br/>[auth_router.py]"]
  node_user_routes["Profiles and discovery<br/>[usuario_router.py]"]
  node_security["JWT and password security<br/>[security.py]"]
  node_attempt_limits["Attempt limits"]
end

subgraph group_care["Consultations and care"]
  node_consultation_routes["Scheduling and appointments<br/>[consulta_router.py]"]
  node_consultation_logic["Availability and booking<br/>[consulta_crud.py]"]
  node_care_measurements["Anthropometric measures<br/>[medida_crud.py]"]
  node_anthropometry["Anthropometry calculations<br/>[antropometria.py]"]
  node_comments["Professional comments"]
end

subgraph group_nutrition["Nutrition plans"]
  node_plans["Diet plans<br/>[plano_router.py]"]
  node_recipes["Meals and recipes<br/>[receita_crud.py]"]
  node_food_routes["Food catalog API<br/>[alimento_router.py]"]
  node_food_catalog["Food catalog lookup"]
end

subgraph group_persistence["Persistence"]
  node_database[("MongoDB connection<br/>[connection.py]")]
  node_user_data["User persistence<br/>[usuario_crud.py]"]
  node_plan_data["Plan persistence<br/>[plano_crud.py]"]
  node_consultation_data["Consultation persistence<br/>[consulta_crud.py]"]
end

node_users(("Patients and nutritionists"))

node_users -->|"uses"| node_frontend
node_frontend -->|"requests data"| node_api_client
node_api_client -->|"calls API"| node_fastapi
node_fastapi -->|"registers routes"| node_identity_routes
node_fastapi -->|"registers routes"| node_user_routes
node_fastapi -->|"registers routes"| node_consultation_routes
node_fastapi -->|"registers routes"| node_food_routes
node_identity_routes -->|"authenticates users"| node_user_data
node_identity_routes -->|"hashes and tokens"| node_security
node_identity_routes -->|"limits attempts"| node_attempt_limits
node_user_routes -->|"manages profiles"| node_user_data
node_user_routes -->|"checks access"| node_security
node_consultation_routes -->|"handles bookings"| node_consultation_logic
node_consultation_logic -->|"reads and writes"| node_database
node_care_measurements -->|"calculates measures"| node_anthropometry
node_food_routes -->|"searches catalog"| node_food_catalog
node_plans -->|"manages plans"| node_plan_data
node_recipes -->|"validates food"| node_food_catalog
node_recipes -->|"stores meals"| node_database
node_user_data -->|"reads and writes"| node_database
node_plan_data -.->|"reads and writes"| node_database

click node_frontend "https://github.com/yukitte/nutrilife/blob/main/frontend/js/app.js"
click node_api_client "https://github.com/yukitte/nutrilife/blob/main/frontend/js/api.js"
click node_fastapi "https://github.com/yukitte/nutrilife/blob/main/backend/main.py"
click node_identity_routes "https://github.com/yukitte/nutrilife/blob/main/backend/routers/auth_router.py"
click node_user_routes "https://github.com/yukitte/nutrilife/blob/main/backend/routers/usuario_router.py"
click node_security "https://github.com/yukitte/nutrilife/blob/main/backend/security.py"
click node_attempt_limits "https://github.com/yukitte/nutrilife/blob/main/backend/limite_tentativas.py"
click node_consultation_routes "https://github.com/yukitte/nutrilife/blob/main/backend/routers/consulta_router.py"
click node_consultation_logic "https://github.com/yukitte/nutrilife/blob/main/backend/crud/consulta_crud.py"
click node_care_measurements "https://github.com/yukitte/nutrilife/blob/main/backend/crud/medida_crud.py"
click node_anthropometry "https://github.com/yukitte/nutrilife/blob/main/backend/antropometria.py"
click node_comments "https://github.com/yukitte/nutrilife/blob/main/backend/routers/comentario_router.py"
click node_plans "https://github.com/yukitte/nutrilife/blob/main/backend/routers/plano_router.py"
click node_recipes "https://github.com/yukitte/nutrilife/blob/main/backend/crud/receita_crud.py"
click node_food_routes "https://github.com/yukitte/nutrilife/blob/main/backend/routers/alimento_router.py"
click node_food_catalog "https://github.com/yukitte/nutrilife/blob/main/backend/catalogo_alimentos.py"
click node_database "https://github.com/yukitte/nutrilife/blob/main/backend/database/connection.py"
click node_user_data "https://github.com/yukitte/nutrilife/blob/main/backend/crud/usuario_crud.py"
click node_plan_data "https://github.com/yukitte/nutrilife/blob/main/backend/crud/plano_crud.py"
click node_consultation_data "https://github.com/yukitte/nutrilife/blob/main/backend/crud/consulta_crud.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_frontend,node_api_client toneBlue
class node_fastapi,node_identity_routes,node_user_routes,node_security,node_attempt_limits toneAmber
class node_consultation_routes,node_consultation_logic,node_care_measurements,node_anthropometry,node_comments toneMint
class node_plans,node_recipes,node_food_routes,node_food_catalog toneRose
class node_database,node_user_data,node_plan_data,node_consultation_data,node_users toneIndigo
```

## Components

### Web client

- [Web application](https://github.com/yukitte/nutrilife/blob/main/frontend/js/app.js): `frontend/js/app.js`
- [API client](https://github.com/yukitte/nutrilife/blob/main/frontend/js/api.js): `frontend/js/api.js`

### API and identity

- [FastAPI application](https://github.com/yukitte/nutrilife/blob/main/backend/main.py): `backend/main.py`
- [Registration and login](https://github.com/yukitte/nutrilife/blob/main/backend/routers/auth_router.py): `backend/routers/auth_router.py`
- [Profiles and discovery](https://github.com/yukitte/nutrilife/blob/main/backend/routers/usuario_router.py): `backend/routers/usuario_router.py`
- [JWT and password security](https://github.com/yukitte/nutrilife/blob/main/backend/security.py): `backend/security.py`
- [Attempt limits](https://github.com/yukitte/nutrilife/blob/main/backend/limite_tentativas.py): `backend/limite_tentativas.py`

### Consultations and care

- [Scheduling and appointments](https://github.com/yukitte/nutrilife/blob/main/backend/routers/consulta_router.py): `backend/routers/consulta_router.py`
- [Availability and booking](https://github.com/yukitte/nutrilife/blob/main/backend/crud/consulta_crud.py): `backend/crud/consulta_crud.py`
- [Anthropometric measures](https://github.com/yukitte/nutrilife/blob/main/backend/crud/medida_crud.py): `backend/crud/medida_crud.py`
- [Anthropometry calculations](https://github.com/yukitte/nutrilife/blob/main/backend/antropometria.py): `backend/antropometria.py`
- [Professional comments](https://github.com/yukitte/nutrilife/blob/main/backend/routers/comentario_router.py): `backend/routers/comentario_router.py`

### Nutrition plans

- [Diet plans](https://github.com/yukitte/nutrilife/blob/main/backend/routers/plano_router.py): `backend/routers/plano_router.py`
- [Meals and recipes](https://github.com/yukitte/nutrilife/blob/main/backend/crud/receita_crud.py): `backend/crud/receita_crud.py`
- [Food catalog API](https://github.com/yukitte/nutrilife/blob/main/backend/routers/alimento_router.py): `backend/routers/alimento_router.py`
- [Food catalog lookup](https://github.com/yukitte/nutrilife/blob/main/backend/catalogo_alimentos.py): `backend/catalogo_alimentos.py`

### Persistence

- [MongoDB connection](https://github.com/yukitte/nutrilife/blob/main/backend/database/connection.py): `backend/database/connection.py`
- [User persistence](https://github.com/yukitte/nutrilife/blob/main/backend/crud/usuario_crud.py): `backend/crud/usuario_crud.py`
- [Plan persistence](https://github.com/yukitte/nutrilife/blob/main/backend/crud/plano_crud.py): `backend/crud/plano_crud.py`
- [Consultation persistence](https://github.com/yukitte/nutrilife/blob/main/backend/crud/consulta_crud.py): `backend/crud/consulta_crud.py`

### Other components

- **Patients and nutritionists**

## Connections

- Patients and nutritionists → Web application: uses (evidence: `README.md`)
- Web application → API client: requests data (evidence: `README.md`)
- API client → FastAPI application: calls API (evidence: `README.md`)
- FastAPI application → Registration and login: registers routes (evidence: `backend/main.py`)
- FastAPI application → Profiles and discovery: registers routes (evidence: `backend/main.py`)
- FastAPI application → Scheduling and appointments: registers routes (evidence: `backend/main.py`)
- FastAPI application → Food catalog API: registers routes (evidence: `backend/main.py`)
- Registration and login → User persistence: authenticates users (evidence: `backend/routers/auth_router.py`)
- Registration and login → JWT and password security: hashes and tokens (evidence: `backend/routers/auth_router.py`)
- Registration and login → Attempt limits: limits attempts (evidence: `backend/routers/auth_router.py`)
- Profiles and discovery → User persistence: manages profiles (evidence: `backend/routers/usuario_router.py`)
- Profiles and discovery → JWT and password security: checks access (evidence: `backend/routers/usuario_router.py`)
- Scheduling and appointments → Availability and booking: handles bookings (evidence: `backend/routers/consulta_router.py`)
- Availability and booking → MongoDB connection: reads and writes (evidence: `backend/crud/consulta_crud.py`)
- Anthropometric measures → Anthropometry calculations: calculates measures (evidence: `backend/crud/medida_crud.py`)
- Food catalog API → Food catalog lookup: searches catalog (evidence: `backend/routers/alimento_router.py`)
- Diet plans → Plan persistence: manages plans (evidence: `backend/routers/plano_router.py`)
- Meals and recipes → Food catalog lookup: validates food (evidence: `backend/crud/receita_crud.py`)
- Meals and recipes → MongoDB connection: stores meals (evidence: `backend/crud/receita_crud.py`)
- User persistence → MongoDB connection: reads and writes (evidence: `backend/crud/usuario_crud.py`)
- Plan persistence → MongoDB connection: reads and writes
