# dbba0/fitforce architecture

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

- Interactive diagram: https://gitdiagram.com/dbba0/fitforce
- Repository: https://github.com/dbba0/fitforce

## Overview

FitForce is a mobile fitness app backed by an Express/MongoDB API. The main journey is athlete authentication, choosing a home or gym program, completing and logging a session, then reviewing goals and progress; premium adds nutrition, hydration, and billing. The graph also preserves profile/social and exercise-discovery capabilities visible in the repository tree. Some mobile screens and API route/controller wiring are unsampled, so those connections are limited to documented endpoints and visible runtime mounts.

Main entry points: [`apps/api/src/app.js`](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/app.js) (HTTP app), [`apps/mobile/app/_layout.tsx`](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/_layout.tsx) (App navigation), [`apps/api/src/models/Session.js`](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/Session.js) (Session records), [`apps/api/src/controllers/sessionController.js`](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/sessionController.js) (Session logic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile app"]
  node_mobile_app["App navigation<br/>[_layout.tsx]"]
  node_auth_ui["Sign in<br/>[auth.tsx]"]
  node_program_ui["Programs<br/>[workouts.tsx]"]
  node_session_ui["Active session<br/>[&#91;id&#93;.tsx]"]
  node_progress_ui["Progress dashboard<br/>[index.tsx]"]
  node_goals_ui["Goals<br/>[goals.tsx]"]
  node_nutrition_ui["Nutrition<br/>[nutrition.tsx]"]
  node_social_ui["Social feed<br/>[feed.tsx]"]
  node_api_client["API client<br/>[query-client.ts]"]
  node_auth_context["Auth state<br/>[AuthContext.tsx]"]
end

subgraph group_training["Training and progress"]
  node_program_routes["Program routes<br/>[programRoutes.js]"]
  node_session_routes["Session routes<br/>[sessionRoutes.js]"]
  node_session_controller["Session logic"]
  node_dashboard_controller["Progress aggregation"]
  node_goal_routes["Goal routes<br/>[goalRoutes.js]"]
end

subgraph group_api["API services"]
  node_api_app["HTTP app<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_session_model[("Session records<br/>[Session.js]")]
  node_program_model[("Program records<br/>[Program.js]")]
  node_user_model[("User records<br/>[User.js]")]
end

subgraph group_premium["Premium and social"]
  node_nutrition_routes["Nutrition routes<br/>[nutritionRoutes.js]"]
  node_billing_routes["Billing routes<br/>[billingRoutes.js]"]
  node_social_routes["Social routes<br/>[socialRoutes.js]"]
  node_user_routes["User and profile<br/>[userRoutes.js]"]
  node_nutrition_controller["Nutrition logic"]
  node_ymove["Ymove integration<br/>[ymoveService.js]"]
end

node_athlete(("Athlete"))
node_mongo[("MongoDB")]

node_athlete -->|"uses"| node_mobile_app
node_mobile_app -->|"opens"| node_auth_ui
node_mobile_app -->|"navigates"| node_program_ui
node_mobile_app -->|"navigates"| node_session_ui
node_mobile_app -->|"navigates"| node_progress_ui
node_mobile_app -->|"navigates"| node_goals_ui
node_mobile_app -->|"navigates"| node_nutrition_ui
node_mobile_app -->|"navigates"| node_social_ui
node_auth_ui -->|"updates auth"| node_auth_context
node_auth_context -->|"stores token"| node_api_client
node_api_client -->|"HTTP requests"| node_api_app
node_api_app -->|"mounts"| node_auth_routes
node_api_app -->|"mounts"| node_program_routes
node_api_app -->|"mounts"| node_session_routes
node_api_app -->|"mounts"| node_goal_routes
node_api_app -->|"mounts"| node_nutrition_routes
node_api_app -->|"mounts"| node_billing_routes
node_api_app -->|"mounts"| node_social_routes
node_api_app -->|"mounts"| node_user_routes
node_session_routes -->|"dispatches"| node_session_controller
node_session_controller -->|"reads and writes"| node_session_model
node_session_controller -->|"updates streak and XP"| node_user_model
node_program_routes -->|"serves programs"| node_program_model
node_dashboard_controller -->|"reads sessions"| node_session_model
node_user_routes -->|"reads and updates"| node_user_model
node_user_routes -->|"reads session stats"| node_session_model
node_nutrition_routes -->|"dispatches"| node_nutrition_controller
node_nutrition_controller -.->|"requests integration"| node_ymove
node_session_model -->|"persists"| node_mongo
node_program_model -->|"persists"| node_mongo
node_user_model -->|"persists"| node_mongo

click node_mobile_app "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/_layout.tsx"
click node_auth_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/auth.tsx"
click node_program_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/workouts.tsx"
click node_session_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/session/%5Bid%5D.tsx"
click node_progress_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/index.tsx"
click node_goals_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(secondary)/goals.tsx"
click node_nutrition_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/nutrition.tsx"
click node_social_ui "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/feed.tsx"
click node_api_client "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/lib/query-client.ts"
click node_auth_context "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/contexts/AuthContext.tsx"
click node_api_app "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/app.js"
click node_auth_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/authRoutes.js"
click node_program_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/programRoutes.js"
click node_session_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/sessionRoutes.js"
click node_session_controller "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/sessionController.js"
click node_dashboard_controller "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/dashboardController.js"
click node_goal_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/goalRoutes.js"
click node_nutrition_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/nutritionRoutes.js"
click node_billing_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/billingRoutes.js"
click node_social_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/socialRoutes.js"
click node_user_routes "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/userRoutes.js"
click node_session_model "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/Session.js"
click node_program_model "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/Program.js"
click node_user_model "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/User.js"
click node_nutrition_controller "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/nutritionController.js"
click node_ymove "https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/services/ymoveService.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_mobile_app,node_auth_ui,node_program_ui,node_session_ui,node_progress_ui,node_goals_ui,node_nutrition_ui,node_social_ui,node_api_client,node_auth_context toneBlue
class node_program_routes,node_session_routes,node_session_controller,node_dashboard_controller,node_goal_routes,node_mongo toneAmber
class node_api_app,node_auth_routes,node_session_model,node_program_model,node_user_model toneMint
class node_nutrition_routes,node_billing_routes,node_social_routes,node_user_routes,node_nutrition_controller,node_ymove toneRose
class node_athlete toneIndigo
```

## Components

### Mobile app

- [App navigation](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/_layout.tsx): `apps/mobile/app/_layout.tsx`
- [Sign in](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/auth.tsx): `apps/mobile/app/auth.tsx`
- [Programs](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/workouts.tsx): `apps/mobile/app/(tabs)/workouts.tsx`
- [Active session](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/session/%5Bid%5D.tsx): `apps/mobile/app/session/[id].tsx`
- [Progress dashboard](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/index.tsx): `apps/mobile/app/(tabs)/index.tsx`
- [Goals](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(secondary)/goals.tsx): `apps/mobile/app/(secondary)/goals.tsx`
- [Nutrition](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/nutrition.tsx): `apps/mobile/app/(tabs)/nutrition.tsx`
- [Social feed](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/app/(tabs)/feed.tsx): `apps/mobile/app/(tabs)/feed.tsx`
- [API client](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/lib/query-client.ts): `apps/mobile/lib/query-client.ts`
- [Auth state](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/mobile/contexts/AuthContext.tsx): `apps/mobile/contexts/AuthContext.tsx`

### Training and progress

- [Program routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/programRoutes.js): `apps/api/src/routes/programRoutes.js`
- [Session routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/sessionRoutes.js): `apps/api/src/routes/sessionRoutes.js`
- [Session logic](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/sessionController.js): `apps/api/src/controllers/sessionController.js`
- [Progress aggregation](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/dashboardController.js): `apps/api/src/controllers/dashboardController.js`
- [Goal routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/goalRoutes.js): `apps/api/src/routes/goalRoutes.js`

### API services

- [HTTP app](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/app.js): `apps/api/src/app.js`
- [Auth routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/authRoutes.js): `apps/api/src/routes/authRoutes.js`
- [Session records](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/Session.js): `apps/api/src/models/Session.js`
- [Program records](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/Program.js): `apps/api/src/models/Program.js`
- [User records](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/models/User.js): `apps/api/src/models/User.js`

### Premium and social

- [Nutrition routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/nutritionRoutes.js): `apps/api/src/routes/nutritionRoutes.js`
- [Billing routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/billingRoutes.js): `apps/api/src/routes/billingRoutes.js`
- [Social routes](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/socialRoutes.js): `apps/api/src/routes/socialRoutes.js`
- [User and profile](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/routes/userRoutes.js): `apps/api/src/routes/userRoutes.js`
- [Nutrition logic](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/controllers/nutritionController.js): `apps/api/src/controllers/nutritionController.js`
- [Ymove integration](https://github.com/dbba0/fitforce/blob/codex/application-fitness-premium/apps/api/src/services/ymoveService.js): `apps/api/src/services/ymoveService.js`

### Other components

- **Athlete**
- **MongoDB**

## Connections

- Athlete → App navigation: uses
- App navigation → Sign in: opens
- App navigation → Programs: navigates
- App navigation → Active session: navigates
- App navigation → Progress dashboard: navigates
- App navigation → Goals: navigates
- App navigation → Nutrition: navigates
- App navigation → Social feed: navigates
- Sign in → Auth state: updates auth
- Auth state → API client: stores token
- API client → HTTP app: HTTP requests
- HTTP app → Auth routes: mounts
- HTTP app → Program routes: mounts
- HTTP app → Session routes: mounts
- HTTP app → Goal routes: mounts
- HTTP app → Nutrition routes: mounts
- HTTP app → Billing routes: mounts
- HTTP app → Social routes: mounts
- HTTP app → User and profile: mounts
- Session routes → Session logic: dispatches
- Session logic → Session records: reads and writes
- Session logic → User records: updates streak and XP
- Program routes → Program records: serves programs
- Progress aggregation → Session records: reads sessions
- User and profile → User records: reads and updates
- User and profile → Session records: reads session stats
- Nutrition routes → Nutrition logic: dispatches
- Nutrition logic → Ymove integration: requests integration
- Session records → MongoDB: persists
- Program records → MongoDB: persists
- User records → MongoDB: persists
