# xuantruong5/visionfit architecture

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

- Interactive diagram: https://gitdiagram.com/xuantruong5/visionfit
- Repository: https://github.com/xuantruong5/visionfit

## Overview

VisionFit presents a member-and-trainer fitness service through a mobile app, with a separate web admin console and Laravel API. The member workflow covers onboarding and profile setup, workout and diet plans, reference content, social feed, and chat; trainers manage members and sessions, while admins handle gym operations, billing, permissions, and AI-related screens. The README describes single-camera exercise-technique analysis, but the excerpts do not expose its processing implementation. Edges are limited to documented navigation, imports, and model use; client-to-server wiring is not shown.

Main entry points: [`modules/appmobile/VF/App.tsx`](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/App.tsx) (App Navigation), [`modules/appmobile/VF/src/general/api.tsx`](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/general/api.tsx) (API Client), [`modules/backend/visionfit/app/Http/Controllers/ChatController.php`](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Http/Controllers/ChatController.php) (Chat Service), [`modules/appmobile/VF/src/page/member/TrainingPlan`](https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/member/TrainingPlan) (Training Plans)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile App"]
  node_appnav["App Navigation<br/>[App.tsx]"]
  node_api["API Client<br/>[api.tsx]"]
  node_auth["Member Auth<br/>[AuthScreen.tsx]"]
  node_training["Training Plans"]
  node_diet["Diet Plans<br/>[DietScreen.tsx]"]
  node_library["Fitness Library"]
  node_social["Sports Feed<br/>[SportFeed.tsx]"]
  node_chatui["Chat UI<br/>[ChatRoom.tsx]"]
  node_trainerui["Trainer Workflows"]
end

subgraph group_backend["Laravel API"]
  node_chatapi["Chat Service<br/>[ChatController.php]"]
  node_chatrooms[("Chat Rooms<br/>[RoomClient.php]")]
  node_membership[("Room Membership")]
  node_messages[("Chat History")]
  node_registration["Program Enrollment"]
  node_memberdata[("Member Records<br/>[Client.php]")]
end

subgraph group_admin["Admin Console"]
  node_adminweb["Admin Routing<br/>[index.js]"]
  node_adminops["Admin Operations"]
end

subgraph group_vision["Exercise Analysis"]
  node_aiadmin["AI Analysis Screens<br/>[phanTichAI.vue]"]
  node_cvgoal["Camera Exercise Analysis"]
end

node_member(("Member"))
node_trainer(("Trainer"))
node_adminactor(("Administrator"))

node_member -->|"uses"| node_appnav
node_trainer -->|"uses"| node_appnav
node_appnav -->|"routes to"| node_auth
node_appnav -->|"routes to"| node_training
node_appnav -->|"routes to"| node_social
node_appnav -->|"routes to"| node_chatui
node_appnav -->|"routes to"| node_trainerui
node_appnav -->|"routes to"| node_library
node_training -->|"renders"| node_diet
node_auth -->|"calls"| node_api
node_training -->|"calls"| node_api
node_diet -->|"calls"| node_api
node_chatui -->|"calls"| node_api
node_chatapi -->|"reads and writes"| node_chatrooms
node_chatapi -->|"reads and writes"| node_membership
node_chatapi -->|"reads and writes"| node_messages
node_registration -->|"uses"| node_memberdata
node_chatrooms -->|"has members"| node_membership
node_chatrooms -->|"has history"| node_messages
node_adminactor -->|"uses"| node_adminweb
node_adminweb -->|"routes to"| node_adminops
node_adminweb -->|"routes to"| node_aiadmin
node_cvgoal -.->|"informs"| node_aiadmin

click node_appnav "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/App.tsx"
click node_api "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/general/api.tsx"
click node_auth "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/AuthScreen.tsx"
click node_training "https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/member/TrainingPlan"
click node_diet "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/TrainingPlan/Tab/DietScreen.tsx"
click node_library "https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/member/SoTay"
click node_social "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/SportFeed.tsx"
click node_chatui "https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/chat/ChatRoom.tsx"
click node_trainerui "https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/trainners"
click node_chatapi "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Http/Controllers/ChatController.php"
click node_chatrooms "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/RoomClient.php"
click node_membership "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/DetailRoomClient.php"
click node_messages "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/RoomHistoryChat.php"
click node_registration "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Http/Controllers/DangKyChuongTrinhController.php"
click node_memberdata "https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/Client.php"
click node_adminweb "https://github.com/xuantruong5/visionfit/blob/main/modules/web-app/web-visionfit/src/router/index.js"
click node_adminops "https://github.com/xuantruong5/visionfit/tree/main/modules/web-app/web-visionfit/src/components/Admin"
click node_aiadmin "https://github.com/xuantruong5/visionfit/blob/main/modules/web-app/web-visionfit/src/components/Admin/phanTichAI/phanTichAI.vue"

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_appnav,node_api,node_auth,node_training,node_diet,node_library,node_social,node_chatui,node_trainerui toneBlue
class node_chatapi,node_chatrooms,node_membership,node_messages,node_registration,node_memberdata toneAmber
class node_adminweb,node_adminops toneMint
class node_aiadmin,node_cvgoal toneRose
class node_member,node_trainer,node_adminactor toneIndigo
```

## Components

### Mobile App

- [App Navigation](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/App.tsx): `modules/appmobile/VF/App.tsx`
- [API Client](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/general/api.tsx): `modules/appmobile/VF/src/general/api.tsx`
- [Member Auth](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/AuthScreen.tsx): `modules/appmobile/VF/src/page/member/AuthScreen.tsx`
- [Training Plans](https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/member/TrainingPlan): `modules/appmobile/VF/src/page/member/TrainingPlan`
- [Diet Plans](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/TrainingPlan/Tab/DietScreen.tsx): `modules/appmobile/VF/src/page/member/TrainingPlan/Tab/DietScreen.tsx`
- [Fitness Library](https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/member/SoTay): `modules/appmobile/VF/src/page/member/SoTay`
- [Sports Feed](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/member/SportFeed.tsx): `modules/appmobile/VF/src/page/member/SportFeed.tsx`
- [Chat UI](https://github.com/xuantruong5/visionfit/blob/main/modules/appmobile/VF/src/page/chat/ChatRoom.tsx): `modules/appmobile/VF/src/page/chat/ChatRoom.tsx`
- [Trainer Workflows](https://github.com/xuantruong5/visionfit/tree/main/modules/appmobile/VF/src/page/trainners): `modules/appmobile/VF/src/page/trainners`

### Laravel API

- [Chat Service](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Http/Controllers/ChatController.php): `modules/backend/visionfit/app/Http/Controllers/ChatController.php`
- [Chat Rooms](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/RoomClient.php): `modules/backend/visionfit/app/Models/RoomClient.php`
- [Room Membership](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/DetailRoomClient.php): `modules/backend/visionfit/app/Models/DetailRoomClient.php`
- [Chat History](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/RoomHistoryChat.php): `modules/backend/visionfit/app/Models/RoomHistoryChat.php`
- [Program Enrollment](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Http/Controllers/DangKyChuongTrinhController.php): `modules/backend/visionfit/app/Http/Controllers/DangKyChuongTrinhController.php`
- [Member Records](https://github.com/xuantruong5/visionfit/blob/main/modules/backend/visionfit/app/Models/Client.php): `modules/backend/visionfit/app/Models/Client.php`

### Admin Console

- [Admin Routing](https://github.com/xuantruong5/visionfit/blob/main/modules/web-app/web-visionfit/src/router/index.js): `modules/web-app/web-visionfit/src/router/index.js`
- [Admin Operations](https://github.com/xuantruong5/visionfit/tree/main/modules/web-app/web-visionfit/src/components/Admin): `modules/web-app/web-visionfit/src/components/Admin`

### Exercise Analysis

- [AI Analysis Screens](https://github.com/xuantruong5/visionfit/blob/main/modules/web-app/web-visionfit/src/components/Admin/phanTichAI/phanTichAI.vue): `modules/web-app/web-visionfit/src/components/Admin/phanTichAI/phanTichAI.vue`
- **Camera Exercise Analysis**

### Other components

- **Member**
- **Trainer**
- **Administrator**

## Connections

- Member → App Navigation: uses (evidence: `modules/appmobile/VF/App.tsx`)
- Trainer → App Navigation: uses (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Member Auth: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Training Plans: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Sports Feed: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Chat UI: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Trainer Workflows: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- App Navigation → Fitness Library: routes to (evidence: `modules/appmobile/VF/App.tsx`)
- Training Plans → Diet Plans: renders (evidence: `modules/appmobile/VF/src/page/member/TrainingPlan/Header/page.tsx`)
- Member Auth → API Client: calls (evidence: `modules/appmobile/VF/src/page/member/AuthScreen.tsx`)
- Training Plans → API Client: calls (evidence: `modules/appmobile/VF/src/page/member/TrainingPlan/Tab/DashboardScreen.tsx`)
- Diet Plans → API Client: calls (evidence: `modules/appmobile/VF/src/page/member/TrainingPlan/Tab/DietScreen.tsx`)
- Chat UI → API Client: calls (evidence: `modules/appmobile/VF/src/page/chat/ChatRoom.tsx`)
- Chat Service → Chat Rooms: reads and writes (evidence: `modules/backend/visionfit/app/Http/Controllers/ChatController.php`)
- Chat Service → Room Membership: reads and writes (evidence: `modules/backend/visionfit/app/Http/Controllers/ChatController.php`)
- Chat Service → Chat History: reads and writes (evidence: `modules/backend/visionfit/app/Http/Controllers/ChatController.php`)
- Program Enrollment → Member Records: uses (evidence: `modules/backend/visionfit/app/Http/Controllers/DangKyChuongTrinhController.php`)
- Chat Rooms → Room Membership: has members (evidence: `modules/backend/visionfit/app/Models/RoomClient.php`)
- Chat Rooms → Chat History: has history (evidence: `modules/backend/visionfit/app/Models/RoomClient.php`)
- Administrator → Admin Routing: uses (evidence: `modules/web-app/web-visionfit/src/router/index.js`)
- Admin Routing → Admin Operations: routes to (evidence: `modules/web-app/web-visionfit/src/router/index.js`)
- Admin Routing → AI Analysis Screens: routes to (evidence: `modules/web-app/web-visionfit/src/router/index.js`)
- Camera Exercise Analysis → AI Analysis Screens: informs
