# nithishsenthil2025/database-systems-and-backend-project architecture

> Architecture diagram of the GitHub repository nithishsenthil2025/database-systems-and-backend-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-03). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nithishsenthil2025/database-systems-and-backend-project
- Repository: https://github.com/nithishsenthil2025/database-systems-and-backend-project

## Overview

GymFit is a role-based gym management and coaching application. Members sign up or recover a Gym Key, then use their portal for daily plans, attendance-dependent workout logging, progress, profile and membership/payment tasks; trainers assign plans, while admins manage attendance and gym operations. The browser communicates with Express routes, which delegate domain operations to services backed by Prisma. The README documents the product capabilities; unsampled route and service internals are represented at their exact enclosing paths, and their detailed call relationships are not inferred.

Main entry points: [`backend/src/server.js`](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/server.js) (Express API), [`frontend/src/lib/api.js`](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/lib/api.js) (API client), [`backend/src/config/prisma.js`](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/config/prisma.js) (Prisma client), [`frontend/src/App.jsx`](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/App.jsx) (Role portals)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Role portals<br/>[App.jsx]"]
  node_public_pages["Public pages"]
  node_member_pages["Member portal"]
  node_trainer_pages["Trainer portal"]
  node_admin_pages["Admin portal"]
  node_shared_ui["Shared UI<br/>[UI.jsx]"]
  node_api_client["API client<br/>[api.js]"]
  node_api_data["API data hook<br/>[useApiData.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_routes["Auth routes<br/>[auth.routes.js]"]
  node_auth_service["Account and recovery<br/>[auth.service.js]"]
  node_auth_middleware["Session and roles<br/>[auth.js]"]
end

subgraph group_coaching["Member and coaching"]
  node_member_routes["Member routes<br/>[member.routes.js]"]
  node_member_service["Member domain<br/>[member.service.js]"]
  node_ai_coach["AI Coach engine<br/>[aiCoach.service.js]"]
  node_trainer_routes["Trainer routes<br/>[trainer.routes.js]"]
  node_trainer_service["Trainer domain<br/>[trainer.service.js]"]
end

subgraph group_operations["Gym operations"]
  node_admin_routes["Admin routes<br/>[admin.routes.js]"]
  node_admin_service["Admin domain<br/>[admin.service.js]"]
  node_events["Live events<br/>[events.service.js]"]
  node_payments["Cashfree payments"]
end

subgraph group_platform["API and persistence"]
  node_server["Express API<br/>[server.js]"]
  node_prisma["Prisma client<br/>[prisma.js]"]
  node_database[("PostgreSQL / Neon")]
end

node_visitor(("Visitor or staff"))
node_mail["Brevo email"]

node_visitor -->|"opens"| node_public_pages
node_visitor -->|"signs in"| node_app
node_app -->|"routes to"| node_public_pages
node_app -->|"routes to"| node_member_pages
node_app -->|"routes to"| node_trainer_pages
node_app -->|"routes to"| node_admin_pages
node_member_pages -->|"loads data"| node_api_data
node_member_pages -->|"requests"| node_api_client
node_admin_pages -->|"requests"| node_api_client
node_trainer_pages -->|"requests"| node_api_client
node_api_data -->|"calls"| node_api_client
node_public_pages -->|"requests"| node_api_client
node_member_pages -->|"renders"| node_shared_ui
node_public_pages -.->|"submits identity"| node_auth_routes
node_api_client -->|"HTTP requests"| node_server
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_member_routes
node_server -->|"mounts"| node_trainer_routes
node_server -->|"mounts"| node_admin_routes
node_server -->|"mounts routes"| node_payments
node_auth_routes -->|"delegates"| node_auth_service
node_auth_routes -->|"uses"| node_auth_middleware
node_member_routes -->|"requires role"| node_auth_middleware
node_member_routes -->|"delegates"| node_member_service
node_member_routes -->|"creates and verifies"| node_payments
node_trainer_routes -->|"delegates"| node_trainer_service
node_admin_routes -->|"requires role"| node_auth_middleware
node_admin_routes -->|"delegates"| node_admin_service
node_member_service -->|"generates plans"| node_ai_coach
node_member_service -->|"publishes updates"| node_events
node_admin_service -->|"publishes updates"| node_events
node_payments -->|"uses member domain"| node_member_service
node_auth_service -->|"sends OTP"| node_mail
node_auth_service -->|"reads and writes"| node_prisma
node_member_service -->|"reads and writes"| node_prisma
node_ai_coach -->|"reads and writes"| node_prisma
node_admin_service -->|"reads and writes"| node_prisma
node_payments -->|"reads and writes"| node_prisma
node_prisma -->|"persists data"| node_database

click node_app "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/App.jsx"
click node_public_pages "https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/public"
click node_member_pages "https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/member"
click node_trainer_pages "https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/trainer"
click node_admin_pages "https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/admin"
click node_shared_ui "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/components/UI.jsx"
click node_api_client "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/lib/api.js"
click node_api_data "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/lib/useApiData.js"
click node_auth_routes "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/auth.routes.js"
click node_auth_service "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/auth.service.js"
click node_auth_middleware "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/middleware/auth.js"
click node_member_routes "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/member.routes.js"
click node_member_service "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/member.service.js"
click node_ai_coach "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/aiCoach.service.js"
click node_trainer_routes "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/trainer.routes.js"
click node_trainer_service "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/trainer.service.js"
click node_admin_routes "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/admin.routes.js"
click node_admin_service "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/admin.service.js"
click node_events "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/events.service.js"
click node_payments "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/cashfree.service.js"
click node_server "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/server.js"
click node_prisma "https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/config/prisma.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_app,node_public_pages,node_member_pages,node_trainer_pages,node_admin_pages,node_shared_ui,node_api_client,node_api_data toneBlue
class node_auth_routes,node_auth_service,node_auth_middleware toneAmber
class node_member_routes,node_member_service,node_ai_coach,node_trainer_routes,node_trainer_service toneMint
class node_admin_routes,node_admin_service,node_events,node_payments toneRose
class node_server,node_prisma,node_database,node_visitor,node_mail toneIndigo
```

## Components

### Web application

- [Role portals](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Public pages](https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/public): `frontend/src/pages/public`
- [Member portal](https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/member): `frontend/src/pages/member`
- [Trainer portal](https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/trainer): `frontend/src/pages/trainer`
- [Admin portal](https://github.com/nithishsenthil2025/database-systems-and-backend-project/tree/main/frontend/src/pages/admin): `frontend/src/pages/admin`
- [Shared UI](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/components/UI.jsx): `frontend/src/components/UI.jsx`
- [API client](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/lib/api.js): `frontend/src/lib/api.js`
- [API data hook](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/frontend/src/lib/useApiData.js): `frontend/src/lib/useApiData.js`

### Identity and access

- [Auth routes](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/auth.routes.js): `backend/src/routes/auth.routes.js`
- [Account and recovery](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/auth.service.js): `backend/src/services/auth.service.js`
- [Session and roles](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/middleware/auth.js): `backend/src/middleware/auth.js`

### Member and coaching

- [Member routes](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/member.routes.js): `backend/src/routes/member.routes.js`
- [Member domain](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/member.service.js): `backend/src/services/member.service.js`
- [AI Coach engine](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/aiCoach.service.js): `backend/src/services/aiCoach.service.js`
- [Trainer routes](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/trainer.routes.js): `backend/src/routes/trainer.routes.js`
- [Trainer domain](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/trainer.service.js): `backend/src/services/trainer.service.js`

### Gym operations

- [Admin routes](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/routes/admin.routes.js): `backend/src/routes/admin.routes.js`
- [Admin domain](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/admin.service.js): `backend/src/services/admin.service.js`
- [Live events](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/events.service.js): `backend/src/services/events.service.js`
- [Cashfree payments](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/services/cashfree.service.js): `backend/src/services/cashfree.service.js`

### API and persistence

- [Express API](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/server.js): `backend/src/server.js`
- [Prisma client](https://github.com/nithishsenthil2025/database-systems-and-backend-project/blob/main/backend/src/config/prisma.js): `backend/src/config/prisma.js`
- **PostgreSQL / Neon**

### Other components

- **Visitor or staff**
- **Brevo email**

## Connections

- Visitor or staff → Public pages: opens
- Visitor or staff → Role portals: signs in (evidence: `README.md`)
- Role portals → Public pages: routes to (evidence: `frontend/src/App.jsx`)
- Role portals → Member portal: routes to (evidence: `frontend/src/App.jsx`)
- Role portals → Trainer portal: routes to (evidence: `frontend/src/App.jsx`)
- Role portals → Admin portal: routes to (evidence: `frontend/src/App.jsx`)
- Member portal → API data hook: loads data (evidence: `frontend/src/pages/member/MemberProfilePage.jsx`)
- Member portal → API client: requests (evidence: `frontend/src/pages/member/MembershipPage.jsx`)
- Admin portal → API client: requests (evidence: `frontend/src/pages/admin/AdminAttendancePage.jsx`)
- Trainer portal → API client: requests (evidence: `frontend/src/pages/trainer/TrainerClientPage.jsx`)
- API data hook → API client: calls (evidence: `frontend/src/lib/useApiData.js`)
- Public pages → API client: requests (evidence: `frontend/src/pages/public/RecoveryPage.jsx`)
- Member portal → Shared UI: renders (evidence: `frontend/src/pages/member/MemberProfilePage.jsx`)
- Public pages → Auth routes: submits identity
- API client → Express API: HTTP requests (evidence: `README.md`)
- Express API → Auth routes: mounts (evidence: `backend/src/server.js`)
- Express API → Member routes: mounts (evidence: `backend/src/server.js`)
- Express API → Trainer routes: mounts (evidence: `backend/src/server.js`)
- Express API → Admin routes: mounts (evidence: `backend/src/server.js`)
- Express API → Cashfree payments: mounts routes (evidence: `backend/src/server.js`)
- Auth routes → Account and recovery: delegates (evidence: `backend/src/routes/auth.routes.js`)
- Auth routes → Session and roles: uses (evidence: `backend/src/routes/auth.routes.js`)
- Member routes → Session and roles: requires role (evidence: `backend/src/routes/member.routes.js`)
- Member routes → Member domain: delegates (evidence: `backend/src/routes/member.routes.js`)
- Member routes → Cashfree payments: creates and verifies (evidence: `backend/src/routes/member.routes.js`)
- Trainer routes → Trainer domain: delegates (evidence: `backend/src/routes/trainer.routes.js`)
- Admin routes → Session and roles: requires role (evidence: `backend/src/routes/admin.routes.js`)
- Admin routes → Admin domain: delegates (evidence: `backend/src/routes/admin.routes.js`)
- Member domain → AI Coach engine: generates plans (evidence: `backend/src/services/member.service.js`)
- Member domain → Live events: publishes updates (evidence: `backend/src/services/member.service.js`)
- Admin domain → Live events: publishes updates (evidence: `backend/src/services/admin.service.js`)
- Cashfree payments → Member domain: uses member domain (evidence: `backend/src/services/cashfree.service.js`)
- Account and recovery → Brevo email: sends OTP (evidence: `backend/src/services/auth.service.js`)
- Account and recovery → Prisma client: reads and writes (evidence: `backend/src/services/auth.service.js`)
- Member domain → Prisma client: reads and writes (evidence: `backend/src/services/member.service.js`)
- AI Coach engine → Prisma client: reads and writes (evidence: `backend/src/services/aiCoach.service.js`)
- Admin domain → Prisma client: reads and writes (evidence: `backend/src/services/admin.service.js`)
- Cashfree payments → Prisma client: reads and writes (evidence: `backend/src/services/cashfree.service.js`)
- Prisma client → PostgreSQL / Neon: persists data (evidence: `README.md`)
