# kanaad-aqeeq/hubcare-node architecture

> Architecture diagram of the GitHub repository kanaad-aqeeq/hubcare-node, 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/kanaad-aqeeq/hubcare-node
- Repository: https://github.com/kanaad-aqeeq/hubcare-node

## Overview

Hubcare is a home-services marketplace with an administrative web console. The principal customer workflow represented here is service selection, booking and payment, provider fulfillment, then review; the repository also includes messaging, wallet, promotions, support, and operational/financial reporting. The admin console exposes management and reporting screens backed by admin APIs. Some backend controllers and frontend data-fetching modules are unsampled, so the graph preserves documented capabilities but omits uncertain links between them.

Main entry points: [`backend/models`](https://github.com/kanaad-aqeeq/hubcare-node/tree/main/backend/models) (Domain models), [`backend/controllers/booking_service.controller.js`](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/booking_service.controller.js) (Bookings), [`backend/index.js`](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/index.js) (HTTP and socket entry), [`backend/controllers/chat/chat.controller.js`](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/chat/chat.controller.js) (Messaging)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Admin console"]
  node_admin_ui["Admin pages<br/>[App.jsx]"]
  node_admin_state["Admin state<br/>[Store.js]"]
  node_api_client["API client<br/>[Api.js]"]
end

subgraph group_marketplace["Marketplace operations"]
  node_catalog["Service catalog"]
  node_booking["Bookings"]
  node_workers["Worker fulfillment"]
  node_wallet["Wallet and payments"]
end

subgraph group_engagement["Engagement and support"]
  node_engagement["Promos and notifications"]
  node_chat["Messaging<br/>[chat.controller.js]"]
  node_reviews["Reviews"]
  node_support["Support and policy"]
end

subgraph group_backend["Backend API"]
  node_admin_reports["Admin reports"]
  node_api_entry["HTTP and socket entry<br/>[index.js]"]
  node_booking_routes["Booking routes"]
  node_admin_routes["Admin routes<br/>[admin.routes.js]"]
  node_review_routes["Review routes"]
  node_socket["Socket service<br/>[socket.js]"]
end

subgraph group_data["Persistence"]
  node_booking_model["Booking records"]
  node_database[("SQL database<br/>[db.js]")]
  node_models["Domain models"]
end

node_admin_user(("Admin"))
node_customer(("Customer"))

node_admin_user -->|"uses"| node_admin_ui
node_admin_ui -->|"dispatches"| node_admin_state
node_admin_state -->|"requests"| node_api_client
node_api_client -->|"sends HTTP"| node_api_entry
node_customer -->|"calls API"| node_api_entry
node_api_entry -->|"mounts"| node_booking_routes
node_api_entry -->|"mounts"| node_admin_routes
node_api_entry -->|"mounts"| node_review_routes
node_booking_routes -->|"dispatches"| node_booking
node_admin_routes -->|"dispatches"| node_admin_reports
node_review_routes -->|"dispatches"| node_reviews
node_booking -->|"reads/writes"| node_booking_model
node_booking -->|"uses wallet"| node_wallet
node_booking -->|"assigns workers"| node_workers
node_booking -->|"checks offers"| node_engagement
node_booking -->|"sends updates"| node_chat
node_reviews -->|"reads/writes"| node_models
node_admin_reports -->|"queries"| node_models
node_catalog -->|"reads/writes"| node_models
node_wallet -->|"reads/writes"| node_models
node_engagement -->|"reads/writes"| node_models
node_chat -->|"reads/writes"| node_models
node_chat -->|"emits messages"| node_socket
node_booking_model -->|"persists"| node_database
node_models -->|"queries"| node_database

click node_admin_ui "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/App.jsx"
click node_admin_state "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/Redux-store/Store.js"
click node_api_client "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/utils/Api.js"
click node_catalog "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/category.controller.js"
click node_booking "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/booking_service.controller.js"
click node_workers "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/worker.controller.js"
click node_wallet "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/wallet.controller.js"
click node_booking_model "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/models/booking_service.model.js"
click node_engagement "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/promo_offer.controller.js"
click node_chat "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/chat/chat.controller.js"
click node_reviews "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/reviewRating.controller.js"
click node_support "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/help_support.controller.js"
click node_admin_reports "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/admin.controller.js"
click node_api_entry "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/index.js"
click node_booking_routes "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/booking_service.routes.js"
click node_admin_routes "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/admin.routes.js"
click node_review_routes "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/reviewRating.routes.js"
click node_database "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/database/db.js"
click node_models "https://github.com/kanaad-aqeeq/hubcare-node/tree/main/backend/models"
click node_socket "https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/utils/socket.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_admin_ui,node_admin_state,node_api_client toneBlue
class node_catalog,node_booking,node_workers,node_wallet toneAmber
class node_engagement,node_chat,node_reviews,node_support toneMint
class node_admin_reports,node_api_entry,node_booking_routes,node_admin_routes,node_review_routes,node_socket toneRose
class node_booking_model,node_database,node_models,node_admin_user,node_customer toneIndigo
```

## Components

### Admin console

- [Admin pages](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Admin state](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/Redux-store/Store.js): `frontend/src/Redux-store/Store.js`
- [API client](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/frontend/src/utils/Api.js): `frontend/src/utils/Api.js`

### Marketplace operations

- [Service catalog](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/category.controller.js): `backend/controllers/category.controller.js`
- [Bookings](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/booking_service.controller.js): `backend/controllers/booking_service.controller.js`
- [Worker fulfillment](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/worker.controller.js): `backend/controllers/worker.controller.js`
- [Wallet and payments](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/wallet.controller.js): `backend/controllers/wallet.controller.js`

### Engagement and support

- [Promos and notifications](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/promo_offer.controller.js): `backend/controllers/promo_offer.controller.js`
- [Messaging](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/chat/chat.controller.js): `backend/controllers/chat/chat.controller.js`
- [Reviews](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/reviewRating.controller.js): `backend/controllers/reviewRating.controller.js`
- [Support and policy](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/help_support.controller.js): `backend/controllers/help_support.controller.js`

### Backend API

- [Admin reports](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/controllers/admin.controller.js): `backend/controllers/admin.controller.js`
- [HTTP and socket entry](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/index.js): `backend/index.js`
- [Booking routes](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/booking_service.routes.js): `backend/routes/booking_service.routes.js`
- [Admin routes](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/admin.routes.js): `backend/routes/admin.routes.js`
- [Review routes](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/routes/reviewRating.routes.js): `backend/routes/reviewRating.routes.js`
- [Socket service](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/utils/socket.js): `backend/utils/socket.js`

### Persistence

- [Booking records](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/models/booking_service.model.js): `backend/models/booking_service.model.js`
- [SQL database](https://github.com/kanaad-aqeeq/hubcare-node/blob/main/backend/database/db.js): `backend/database/db.js`
- [Domain models](https://github.com/kanaad-aqeeq/hubcare-node/tree/main/backend/models): `backend/models`

### Other components

- **Admin**
- **Customer**

## Connections

- Admin → Admin pages: uses
- Admin pages → Admin state: dispatches
- Admin state → API client: requests
- API client → HTTP and socket entry: sends HTTP
- Customer → HTTP and socket entry: calls API
- HTTP and socket entry → Booking routes: mounts
- HTTP and socket entry → Admin routes: mounts
- HTTP and socket entry → Review routes: mounts
- Booking routes → Bookings: dispatches
- Admin routes → Admin reports: dispatches
- Review routes → Reviews: dispatches
- Bookings → Booking records: reads/writes
- Bookings → Wallet and payments: uses wallet
- Bookings → Worker fulfillment: assigns workers
- Bookings → Promos and notifications: checks offers
- Bookings → Messaging: sends updates
- Reviews → Domain models: reads/writes
- Admin reports → Domain models: queries
- Service catalog → Domain models: reads/writes
- Wallet and payments → Domain models: reads/writes
- Promos and notifications → Domain models: reads/writes
- Messaging → Domain models: reads/writes
- Messaging → Socket service: emits messages
- Booking records → SQL database: persists
- Domain models → SQL database: queries
