# aqsakhushi/ibadahconnect architecture

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

- Interactive diagram: https://gitdiagram.com/aqsakhushi/ibadahconnect
- Repository: https://github.com/aqsakhushi/ibadahconnect

## Overview

IbadahConnect is a web platform for arranging Hajj/Umrah Badal and related services: sponsors browse services, authenticate, book and pay, then follow fulfillment; performers and administrators have separate operational workflows. The visible backend exposes authentication, orders, packages, payments, performer, proof, tracking, chat and rules APIs, with MongoDB-backed user, order and package models. The source excerpts do not show most page-to-route calls, so those connections are left out; several backend routes are represented by their exact paths but their internal model wiring is not asserted.

Main entry points: [`backend/server.js`](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/server.js) (API server), [`ibadahconnect/src/App.jsx`](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/App.jsx) (Web application), [`ibadahconnect/src/pages/ServiceDetailPage.jsx`](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/pages/ServiceDetailPage.jsx) (Service details), [`backend/routes/auth.js`](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/auth.js) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_webapp["Web application<br/>[App.jsx]"]
  node_service_detail["Service details"]
  node_cart["Cart state<br/>[CartContext.jsx]"]
  node_auth_modal["Auth interface<br/>[AuthModal.jsx]"]
  node_client_api["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and verification"]
  node_auth_routes["Authentication<br/>[auth.js]"]
  node_user_model[("User records<br/>[User.js]")]
  node_email["Verification email<br/>[sendEmail.js]"]
end

subgraph group_commerce["Service and booking"]
  node_packages_routes["Package catalog<br/>[packages.js]"]
  node_package_model[("Package records<br/>[Package.js]")]
  node_orders_routes["Sponsor orders<br/>[orders.js]"]
  node_order_model[("Order records<br/>[Order.js]")]
  node_payments_routes["Payments<br/>[payments.js]"]
  node_payment_admin["Payment review<br/>[payment-admin.js]"]
end

subgraph group_operations["Fulfillment and oversight"]
  node_performer_orders["Performer orders<br/>[performerOrders.js]"]
  node_proof["Proof and OCR<br/>[ocr.js]"]
  node_upload["File uploads<br/>[upload.js]"]
  node_tracking["Order tracking<br/>[track.js]"]
  node_chat["Sponsor performer chat<br/>[chat.js]"]
  node_rules["Service rules<br/>[rules.js]"]
  node_server["API server<br/>[server.js]"]
end

node_sponsor(("Sponsor"))
node_performer(("Performer"))
node_admin(("Administrator"))
node_mongo[("MongoDB")]
node_smtp["SMTP service"]

node_sponsor -->|"uses"| node_webapp
node_performer -->|"uses"| node_webapp
node_admin -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_service_detail
node_webapp -->|"renders"| node_auth_modal
node_service_detail -->|"fetches packages"| node_client_api
node_service_detail -->|"adds items"| node_cart
node_auth_modal -->|"logs in"| node_auth_routes
node_client_api -->|"requests API"| node_server
node_server -->|"mounts routes"| node_auth_routes
node_server -->|"mounts routes"| node_packages_routes
node_server -->|"mounts routes"| node_orders_routes
node_server -->|"mounts routes"| node_payments_routes
node_server -->|"mounts routes"| node_payment_admin
node_server -->|"mounts routes"| node_performer_orders
node_server -->|"mounts routes"| node_proof
node_server -->|"mounts routes"| node_upload
node_server -->|"mounts routes"| node_tracking
node_server -->|"mounts routes"| node_chat
node_server -->|"mounts routes"| node_rules
node_server -->|"connects to"| node_mongo
node_server -->|"seeds packages"| node_package_model
node_auth_routes -->|"sends verification"| node_email
node_email -->|"delivers mail"| node_smtp

click node_webapp "https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/App.jsx"
click node_service_detail "https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/pages/ServiceDetailPage.jsx"
click node_cart "https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/context/CartContext.jsx"
click node_auth_modal "https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/components/AuthModal.jsx"
click node_client_api "https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/api.js"
click node_auth_routes "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/auth.js"
click node_user_model "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/User.js"
click node_email "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/utils/sendEmail.js"
click node_packages_routes "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/packages.js"
click node_package_model "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/Package.js"
click node_orders_routes "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/orders.js"
click node_order_model "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/Order.js"
click node_payments_routes "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/payments.js"
click node_payment_admin "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/payment-admin.js"
click node_performer_orders "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/performerOrders.js"
click node_proof "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/ocr.js"
click node_upload "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/upload.js"
click node_tracking "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/track.js"
click node_chat "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/chat.js"
click node_rules "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/rules.js"
click node_server "https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/server.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_webapp,node_service_detail,node_cart,node_auth_modal,node_client_api toneBlue
class node_auth_routes,node_user_model,node_email,node_mongo toneAmber
class node_packages_routes,node_package_model,node_orders_routes,node_order_model,node_payments_routes,node_payment_admin toneMint
class node_performer_orders,node_proof,node_upload,node_tracking,node_chat,node_rules,node_server toneRose
class node_sponsor,node_performer,node_admin,node_smtp toneIndigo
```

## Components

### Web client

- [Web application](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/App.jsx): `ibadahconnect/src/App.jsx`
- [Service details](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/pages/ServiceDetailPage.jsx): `ibadahconnect/src/pages/ServiceDetailPage.jsx`
- [Cart state](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/context/CartContext.jsx): `ibadahconnect/src/context/CartContext.jsx`
- [Auth interface](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/components/AuthModal.jsx): `ibadahconnect/src/components/AuthModal.jsx`
- [API client](https://github.com/aqsakhushi/ibadahconnect/blob/main/ibadahconnect/src/api.js): `ibadahconnect/src/api.js`

### Identity and verification

- [Authentication](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [User records](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/User.js): `backend/models/User.js`
- [Verification email](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/utils/sendEmail.js): `backend/utils/sendEmail.js`

### Service and booking

- [Package catalog](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/packages.js): `backend/routes/packages.js`
- [Package records](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/Package.js): `backend/models/Package.js`
- [Sponsor orders](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/orders.js): `backend/routes/orders.js`
- [Order records](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/models/Order.js): `backend/models/Order.js`
- [Payments](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/payments.js): `backend/routes/payments.js`
- [Payment review](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/payment-admin.js): `backend/routes/payment-admin.js`

### Fulfillment and oversight

- [Performer orders](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/performerOrders.js): `backend/routes/performerOrders.js`
- [Proof and OCR](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/ocr.js): `backend/routes/ocr.js`
- [File uploads](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/upload.js): `backend/routes/upload.js`
- [Order tracking](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/track.js): `backend/routes/track.js`
- [Sponsor performer chat](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/chat.js): `backend/routes/chat.js`
- [Service rules](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/routes/rules.js): `backend/routes/rules.js`
- [API server](https://github.com/aqsakhushi/ibadahconnect/blob/main/backend/server.js): `backend/server.js`

### Other components

- **Sponsor**
- **Performer**
- **Administrator**
- **MongoDB**
- **SMTP service**

## Connections

- Sponsor → Web application: uses
- Performer → Web application: uses
- Administrator → Web application: uses
- Web application → Service details: routes to
- Web application → Auth interface: renders
- Service details → API client: fetches packages
- Service details → Cart state: adds items
- Auth interface → Authentication: logs in
- API client → API server: requests API
- API server → Authentication: mounts routes
- API server → Package catalog: mounts routes
- API server → Sponsor orders: mounts routes
- API server → Payments: mounts routes
- API server → Payment review: mounts routes
- API server → Performer orders: mounts routes
- API server → Proof and OCR: mounts routes
- API server → File uploads: mounts routes
- API server → Order tracking: mounts routes
- API server → Sponsor performer chat: mounts routes
- API server → Service rules: mounts routes
- API server → MongoDB: connects to
- API server → Package records: seeds packages
- Authentication → Verification email: sends verification
- Verification email → SMTP service: delivers mail
