# zeroboss-ai/zerofit architecture

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

- Interactive diagram: https://gitdiagram.com/zeroboss-ai/zerofit
- Repository: https://github.com/zeroboss-ai/zerofit

## Overview

Fit Tracker is a fitness and nutrition guidance platform. Its main user journey is to provide health metrics, receive personalized targets and diet/workout guidance, then log progress and use the knowledge and coaching tools. The graph preserves the README’s major capabilities; page-level wiring for several documented features was not sampled, so those links are not inferred. The sampled API routes show profile, authentication, progress, food lookup, article, and AI processing responsibilities.

Main entry points: [`app/api/chat/route.ts`](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/chat/route.ts) (AI coach API), [`app/api/ai/analyze-activity/route.ts`](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/ai/analyze-activity/route.ts) (Activity analysis), [`lib/auth.ts`](https://github.com/zeroboss-ai/zerofit/blob/main/lib/auth.ts) (Session and passwords), [`lib/db.ts`](https://github.com/zeroboss-ai/zerofit/blob/main/lib/db.ts) (MongoDB and fallback)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_home["Home<br/>[page.tsx]"]
  node_profile_page["Profile<br/>[page.tsx]"]
  node_knowledge_page["Knowledge hub<br/>[page.tsx]"]
  node_article_page["Knowledge article<br/>[page.tsx]"]
  node_calculators_page["Calculators<br/>[page.tsx]"]
end

subgraph group_guidance["Plans and guidance"]
  node_diet_page["Diet plans<br/>[page.tsx]"]
  node_workout_page["Workout plans<br/>[page.tsx]"]
  node_personalization["Personalized targets<br/>[personalization.ts]"]
  node_knowledge_data["Knowledge articles<br/>[knowledge-data.ts]"]
  node_profile_api["Profile API<br/>[route.ts]"]
  node_articles_api["Article search API<br/>[route.ts]"]
  node_calculators["Calculator tools<br/>[BMICalculator.tsx]"]
end

subgraph group_tracking["Health tracking"]
  node_progress_page["Progress tracker<br/>[page.tsx]"]
  node_progress_api["Progress API<br/>[route.ts]"]
  node_food_search["Food nutrition search"]
  node_activity_api["Activity analysis<br/>[route.ts]"]
  node_openfoodfacts_api["Packaged food lookup<br/>[route.ts]"]
  node_usda_api["Food nutrient lookup<br/>[route.ts]"]
end

subgraph group_services["Application services"]
  node_auth_api["Authentication routes<br/>[route.ts]"]
  node_chat_api["AI coach API<br/>[route.ts]"]
  node_gemini["Gemini services<br/>[gemini.ts]"]
  node_auth["Session and passwords<br/>[auth.ts]"]
  node_database[("MongoDB and fallback<br/>[db.ts]")]
  node_models["Data models<br/>[models.ts]"]
end

node_user(("Fitness user"))
node_usda(("USDA FoodData Central"))
node_off(("Open Food Facts"))

node_user -->|"uses"| node_home
node_user -->|"sets metrics"| node_profile_page
node_user -->|"requests guidance"| node_diet_page
node_user -->|"requests training"| node_workout_page
node_user -->|"searches"| node_knowledge_page
node_user -->|"calculates"| node_calculators_page
node_user -->|"logs progress"| node_progress_page
node_profile_api -->|"computes targets"| node_personalization
node_profile_api -->|"checks session"| node_auth
node_profile_api -->|"reads or writes"| node_database
node_profile_api -->|"uses profiles"| node_models
node_articles_api -->|"filters articles"| node_knowledge_data
node_progress_api -->|"checks session"| node_auth
node_progress_api -->|"reads or writes"| node_database
node_progress_api -->|"uses progress logs"| node_models
node_calculators_page -->|"presents tools"| node_calculators
node_activity_api -->|"checks session"| node_auth
node_activity_api -->|"reads profile"| node_database
node_activity_api -->|"uses profiles"| node_models
node_activity_api -->|"recomputes targets"| node_personalization
node_activity_api -->|"analyzes activity"| node_gemini
node_food_search -->|"searches nutrients"| node_usda_api
node_food_search -->|"looks up foods"| node_openfoodfacts_api
node_usda_api -->|"searches foods"| node_usda
node_openfoodfacts_api -->|"searches products"| node_off
node_chat_api -->|"matches articles"| node_knowledge_data
node_chat_api -->|"checks session"| node_auth
node_chat_api -->|"reads profile"| node_database
node_chat_api -->|"uses profiles"| node_models
node_chat_api -->|"asks coach"| node_gemini
node_auth_api -->|"hashes and signs"| node_auth
node_auth_api -->|"reads or writes"| node_database
node_auth_api -->|"uses user profiles"| node_models
node_home -.->|"coaches user"| node_chat_api

click node_home "https://github.com/zeroboss-ai/zerofit/blob/main/app/page.tsx"
click node_profile_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/profile/page.tsx"
click node_knowledge_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/knowledge/page.tsx"
click node_article_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/knowledge/%5Bslug%5D/page.tsx"
click node_calculators_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/calculators/page.tsx"
click node_diet_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/diet-plans/page.tsx"
click node_workout_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/workout-plans/page.tsx"
click node_personalization "https://github.com/zeroboss-ai/zerofit/blob/main/lib/personalization.ts"
click node_knowledge_data "https://github.com/zeroboss-ai/zerofit/blob/main/lib/knowledge-data.ts"
click node_profile_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/profile/route.ts"
click node_articles_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/articles/route.ts"
click node_calculators "https://github.com/zeroboss-ai/zerofit/blob/main/components/calculators/BMICalculator.tsx"
click node_progress_page "https://github.com/zeroboss-ai/zerofit/blob/main/app/progress/page.tsx"
click node_progress_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/progress/route.ts"
click node_food_search "https://github.com/zeroboss-ai/zerofit/blob/main/components/FoodNutritionSearch.tsx"
click node_activity_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/ai/analyze-activity/route.ts"
click node_openfoodfacts_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/food/openfoodfacts/route.ts"
click node_usda_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/food/usda/route.ts"
click node_auth_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/auth/login/route.ts"
click node_chat_api "https://github.com/zeroboss-ai/zerofit/blob/main/app/api/chat/route.ts"
click node_gemini "https://github.com/zeroboss-ai/zerofit/blob/main/lib/gemini.ts"
click node_auth "https://github.com/zeroboss-ai/zerofit/blob/main/lib/auth.ts"
click node_database "https://github.com/zeroboss-ai/zerofit/blob/main/lib/db.ts"
click node_models "https://github.com/zeroboss-ai/zerofit/blob/main/lib/models.ts"

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_home,node_profile_page,node_knowledge_page,node_article_page,node_calculators_page,node_user toneBlue
class node_diet_page,node_workout_page,node_personalization,node_knowledge_data,node_profile_api,node_articles_api,node_calculators toneAmber
class node_progress_page,node_progress_api,node_food_search,node_activity_api,node_openfoodfacts_api,node_usda_api toneMint
class node_auth_api,node_chat_api,node_gemini,node_auth,node_database,node_models toneRose
class node_usda,node_off toneIndigo
```

## Components

### User experience

- [Home](https://github.com/zeroboss-ai/zerofit/blob/main/app/page.tsx): `app/page.tsx`
- [Profile](https://github.com/zeroboss-ai/zerofit/blob/main/app/profile/page.tsx): `app/profile/page.tsx`
- [Knowledge hub](https://github.com/zeroboss-ai/zerofit/blob/main/app/knowledge/page.tsx): `app/knowledge/page.tsx`
- [Knowledge article](https://github.com/zeroboss-ai/zerofit/blob/main/app/knowledge/%5Bslug%5D/page.tsx): `app/knowledge/[slug]/page.tsx`
- [Calculators](https://github.com/zeroboss-ai/zerofit/blob/main/app/calculators/page.tsx): `app/calculators/page.tsx`

### Plans and guidance

- [Diet plans](https://github.com/zeroboss-ai/zerofit/blob/main/app/diet-plans/page.tsx): `app/diet-plans/page.tsx`
- [Workout plans](https://github.com/zeroboss-ai/zerofit/blob/main/app/workout-plans/page.tsx): `app/workout-plans/page.tsx`
- [Personalized targets](https://github.com/zeroboss-ai/zerofit/blob/main/lib/personalization.ts): `lib/personalization.ts`
- [Knowledge articles](https://github.com/zeroboss-ai/zerofit/blob/main/lib/knowledge-data.ts): `lib/knowledge-data.ts`
- [Profile API](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/profile/route.ts): `app/api/profile/route.ts`
- [Article search API](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/articles/route.ts): `app/api/articles/route.ts`
- [Calculator tools](https://github.com/zeroboss-ai/zerofit/blob/main/components/calculators/BMICalculator.tsx): `components/calculators/BMICalculator.tsx`

### Health tracking

- [Progress tracker](https://github.com/zeroboss-ai/zerofit/blob/main/app/progress/page.tsx): `app/progress/page.tsx`
- [Progress API](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/progress/route.ts): `app/api/progress/route.ts`
- [Food nutrition search](https://github.com/zeroboss-ai/zerofit/blob/main/components/FoodNutritionSearch.tsx): `components/FoodNutritionSearch.tsx`
- [Activity analysis](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/ai/analyze-activity/route.ts): `app/api/ai/analyze-activity/route.ts`
- [Packaged food lookup](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/food/openfoodfacts/route.ts): `app/api/food/openfoodfacts/route.ts`
- [Food nutrient lookup](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/food/usda/route.ts): `app/api/food/usda/route.ts`

### Application services

- [Authentication routes](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`
- [AI coach API](https://github.com/zeroboss-ai/zerofit/blob/main/app/api/chat/route.ts): `app/api/chat/route.ts`
- [Gemini services](https://github.com/zeroboss-ai/zerofit/blob/main/lib/gemini.ts): `lib/gemini.ts`
- [Session and passwords](https://github.com/zeroboss-ai/zerofit/blob/main/lib/auth.ts): `lib/auth.ts`
- [MongoDB and fallback](https://github.com/zeroboss-ai/zerofit/blob/main/lib/db.ts): `lib/db.ts`
- [Data models](https://github.com/zeroboss-ai/zerofit/blob/main/lib/models.ts): `lib/models.ts`

### Other components

- **Fitness user**
- **USDA FoodData Central**
- **Open Food Facts**

## Connections

- Fitness user → Home: uses
- Fitness user → Profile: sets metrics
- Fitness user → Diet plans: requests guidance
- Fitness user → Workout plans: requests training
- Fitness user → Knowledge hub: searches
- Fitness user → Calculators: calculates
- Fitness user → Progress tracker: logs progress
- Profile API → Personalized targets: computes targets
- Profile API → Session and passwords: checks session
- Profile API → MongoDB and fallback: reads or writes
- Profile API → Data models: uses profiles
- Article search API → Knowledge articles: filters articles
- Progress API → Session and passwords: checks session
- Progress API → MongoDB and fallback: reads or writes
- Progress API → Data models: uses progress logs
- Calculators → Calculator tools: presents tools
- Activity analysis → Session and passwords: checks session
- Activity analysis → MongoDB and fallback: reads profile
- Activity analysis → Data models: uses profiles
- Activity analysis → Personalized targets: recomputes targets
- Activity analysis → Gemini services: analyzes activity
- Food nutrition search → Food nutrient lookup: searches nutrients
- Food nutrition search → Packaged food lookup: looks up foods
- Food nutrient lookup → USDA FoodData Central: searches foods
- Packaged food lookup → Open Food Facts: searches products
- AI coach API → Knowledge articles: matches articles
- AI coach API → Session and passwords: checks session
- AI coach API → MongoDB and fallback: reads profile
- AI coach API → Data models: uses profiles
- AI coach API → Gemini services: asks coach
- Authentication routes → Session and passwords: hashes and signs
- Authentication routes → MongoDB and fallback: reads or writes
- Authentication routes → Data models: uses user profiles
- Home → AI coach API: coaches user
