# nesamcabs/nesam_cabs architecture

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

- Interactive diagram: https://gitdiagram.com/nesamcabs/nesam_cabs
- Repository: https://github.com/nesamcabs/nesam_cabs

## Overview

Nesam Travels is a ride-booking and travel-operations product with customer, driver, and admin applications backed by shared Firebase services and server functions. The customer journey covers booking and ride follow-through; drivers manage verification, trips, and earnings; admins configure services and fares and oversee bookings and operations. The graph includes documented app entry points and fare administration. The README has no product detail, and sampled source is limited, so unverified backend and cross-app relationships are omitted.

Main entry points: [`admin/src/App.tsx`](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/App.tsx) (Admin console), [`functions/src/fixedRoutes.ts`](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/fixedRoutes.ts) (Fixed route fares), [`user/app/App.tsx`](https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/App.tsx) (Customer app), [`driver/App.tsx`](https://github.com/nesamcabs/nesam_cabs/blob/main/driver/App.tsx) (Driver app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer booking"]
  node_customer_app["Customer app<br/>[App.tsx]"]
  node_customer_nav["Customer journeys"]
  node_customer_quotes["Quote workflow<br/>[useServerQuotes.ts]"]
  node_customer_auth["Customer auth<br/>[authService.ts]"]
  node_customer_web["Customer website<br/>[App.tsx]"]
end

subgraph group_driver["Driver operations"]
  node_driver_app["Driver app<br/>[App.tsx]"]
  node_driver_nav["Driver journeys"]
  node_driver_auth["Driver auth<br/>[authService.ts]"]
  node_driver_data["Driver records<br/>[driverService.ts]"]
  node_driver_types["Driver domain<br/>[driver.ts]"]
end

subgraph group_admin["Admin operations"]
  node_admin_app["Admin console<br/>[App.tsx]"]
  node_admin_bookings["Booking oversight<br/>[BookingDetails.tsx]"]
  node_admin_localtaxi["Local taxi<br/>[LocalTaxi.tsx]"]
  node_admin_pricing["Pricing workspace<br/>[Pricing.tsx]"]
  node_admin_services["Service catalog<br/>[Services.tsx]"]
  node_admin_locations["Location setup<br/>[Locations.tsx]"]
  node_admin_reviews["Reviews<br/>[Reviews.tsx]"]
  node_admin_tours["Tour packages<br/>[TourPackages.tsx]"]
  node_admin_fare_engine["Fare calculation<br/>[fareEngine.ts]"]
end

subgraph group_backend["Server capabilities"]
  node_functions["Callable services<br/>[index.ts]"]
  node_fixed_fares["Fixed route fares<br/>[fixedRoutes.ts]"]
  node_server_admin["Server permissions<br/>[admin.ts]"]
  node_server_shared["Server helpers<br/>[shared.ts]"]
  node_fare_scope["Fare scope<br/>[fareScope.ts]"]
  node_audit["Audit records<br/>[audit.ts]"]
end

node_customer(("Customer"))
node_driver_actor(("Driver"))
node_admin_actor(("Admin staff"))
node_firestore[("Firebase data")]

node_customer -->|"uses"| node_customer_app
node_customer_app -->|"subscribes to auth"| node_customer_auth
node_customer_app -->|"opens journeys"| node_customer_nav
node_customer -.->|"uses website"| node_customer_web
node_customer -.->|"requests quotes"| node_customer_quotes
node_driver_actor -->|"uses"| node_driver_app
node_driver_app -->|"subscribes to auth"| node_driver_auth
node_driver_app -->|"opens approved workspace"| node_driver_nav
node_driver_data -->|"reads and writes"| node_firestore
node_driver_data -->|"maps records"| node_driver_types
node_admin_actor -->|"uses"| node_admin_app
node_admin_app -->|"routes to"| node_admin_bookings
node_admin_app -->|"routes to"| node_admin_localtaxi
node_admin_app -->|"routes to"| node_admin_reviews
node_admin_app -.->|"routes to"| node_admin_services
node_admin_app -.->|"routes to"| node_admin_pricing
node_admin_app -.->|"routes to"| node_admin_locations
node_admin_app -.->|"routes to"| node_admin_tours
node_admin_services -->|"saves services"| node_firestore
node_admin_pricing -.->|"calculates fares"| node_admin_fare_engine
node_functions -.->|"exports callable"| node_fixed_fares
node_fixed_fares -->|"checks permission"| node_server_admin
node_fixed_fares -->|"uses helpers"| node_server_shared
node_fixed_fares -->|"parses scope"| node_fare_scope
node_fixed_fares -->|"records changes"| node_audit
node_fixed_fares -->|"reads and writes"| node_firestore

click node_customer_app "https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/App.tsx"
click node_customer_nav "https://github.com/nesamcabs/nesam_cabs/tree/main/user/app/src/screens"
click node_customer_quotes "https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/src/hooks/useServerQuotes.ts"
click node_customer_auth "https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/src/services/authService.ts"
click node_customer_web "https://github.com/nesamcabs/nesam_cabs/blob/main/user/web/src/App.tsx"
click node_driver_app "https://github.com/nesamcabs/nesam_cabs/blob/main/driver/App.tsx"
click node_driver_nav "https://github.com/nesamcabs/nesam_cabs/tree/main/driver/src/screens"
click node_driver_auth "https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/services/authService.ts"
click node_driver_data "https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/services/driverService.ts"
click node_driver_types "https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/types/driver.ts"
click node_admin_app "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/App.tsx"
click node_admin_bookings "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/BookingDetails.tsx"
click node_admin_localtaxi "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/LocalTaxi.tsx"
click node_admin_pricing "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Pricing.tsx"
click node_admin_services "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Services.tsx"
click node_admin_locations "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Locations.tsx"
click node_admin_reviews "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Reviews.tsx"
click node_admin_tours "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/TourPackages.tsx"
click node_admin_fare_engine "https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/services/fareEngine.ts"
click node_functions "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/index.ts"
click node_fixed_fares "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/fixedRoutes.ts"
click node_server_admin "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/admin.ts"
click node_server_shared "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/shared.ts"
click node_fare_scope "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/fareScope.ts"
click node_audit "https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/audit.ts"

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_customer_app,node_customer_nav,node_customer_quotes,node_customer_auth,node_customer_web toneBlue
class node_driver_app,node_driver_nav,node_driver_auth,node_driver_data,node_driver_types,node_firestore toneAmber
class node_admin_app,node_admin_bookings,node_admin_localtaxi,node_admin_pricing,node_admin_services,node_admin_locations,node_admin_reviews,node_admin_tours,node_admin_fare_engine toneMint
class node_functions,node_fixed_fares,node_server_admin,node_server_shared,node_fare_scope,node_audit toneRose
class node_customer,node_driver_actor,node_admin_actor toneIndigo
```

## Components

### Customer booking

- [Customer app](https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/App.tsx): `user/app/App.tsx`
- [Customer journeys](https://github.com/nesamcabs/nesam_cabs/tree/main/user/app/src/screens): `user/app/src/screens`
- [Quote workflow](https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/src/hooks/useServerQuotes.ts): `user/app/src/hooks/useServerQuotes.ts`
- [Customer auth](https://github.com/nesamcabs/nesam_cabs/blob/main/user/app/src/services/authService.ts): `user/app/src/services/authService.ts`
- [Customer website](https://github.com/nesamcabs/nesam_cabs/blob/main/user/web/src/App.tsx): `user/web/src/App.tsx`

### Driver operations

- [Driver app](https://github.com/nesamcabs/nesam_cabs/blob/main/driver/App.tsx): `driver/App.tsx`
- [Driver journeys](https://github.com/nesamcabs/nesam_cabs/tree/main/driver/src/screens): `driver/src/screens`
- [Driver auth](https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/services/authService.ts): `driver/src/services/authService.ts`
- [Driver records](https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/services/driverService.ts): `driver/src/services/driverService.ts`
- [Driver domain](https://github.com/nesamcabs/nesam_cabs/blob/main/driver/src/types/driver.ts): `driver/src/types/driver.ts`

### Admin operations

- [Admin console](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/App.tsx): `admin/src/App.tsx`
- [Booking oversight](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/BookingDetails.tsx): `admin/src/pages/BookingDetails.tsx`
- [Local taxi](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/LocalTaxi.tsx): `admin/src/pages/LocalTaxi.tsx`
- [Pricing workspace](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Pricing.tsx): `admin/src/pages/Pricing.tsx`
- [Service catalog](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Services.tsx): `admin/src/pages/Services.tsx`
- [Location setup](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Locations.tsx): `admin/src/pages/Locations.tsx`
- [Reviews](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/Reviews.tsx): `admin/src/pages/Reviews.tsx`
- [Tour packages](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/pages/TourPackages.tsx): `admin/src/pages/TourPackages.tsx`
- [Fare calculation](https://github.com/nesamcabs/nesam_cabs/blob/main/admin/src/services/fareEngine.ts): `admin/src/services/fareEngine.ts`

### Server capabilities

- [Callable services](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/index.ts): `functions/src/index.ts`
- [Fixed route fares](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/fixedRoutes.ts): `functions/src/fixedRoutes.ts`
- [Server permissions](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/admin.ts): `functions/src/admin.ts`
- [Server helpers](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/shared.ts): `functions/src/shared.ts`
- [Fare scope](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/fareScope.ts): `functions/src/fareScope.ts`
- [Audit records](https://github.com/nesamcabs/nesam_cabs/blob/main/functions/src/audit.ts): `functions/src/audit.ts`

### Other components

- **Customer**
- **Driver**
- **Admin staff**
- **Firebase data**

## Connections

- Customer → Customer app: uses
- Customer app → Customer auth: subscribes to auth (evidence: `user/app/App.tsx`)
- Customer app → Customer journeys: opens journeys (evidence: `user/app/App.tsx`)
- Customer → Customer website: uses website
- Customer → Quote workflow: requests quotes
- Driver → Driver app: uses
- Driver app → Driver auth: subscribes to auth (evidence: `driver/App.tsx`)
- Driver app → Driver journeys: opens approved workspace (evidence: `driver/App.tsx`)
- Driver records → Firebase data: reads and writes (evidence: `driver/src/services/driverService.ts`)
- Driver records → Driver domain: maps records (evidence: `driver/src/services/driverService.ts`)
- Admin staff → Admin console: uses
- Admin console → Booking oversight: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Local taxi: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Reviews: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Service catalog: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Pricing workspace: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Location setup: routes to (evidence: `admin/src/App.tsx`)
- Admin console → Tour packages: routes to (evidence: `admin/src/App.tsx`)
- Service catalog → Firebase data: saves services (evidence: `admin/src/pages/Services.tsx`)
- Pricing workspace → Fare calculation: calculates fares
- Callable services → Fixed route fares: exports callable
- Fixed route fares → Server permissions: checks permission (evidence: `functions/src/fixedRoutes.ts`)
- Fixed route fares → Server helpers: uses helpers (evidence: `functions/src/fixedRoutes.ts`)
- Fixed route fares → Fare scope: parses scope (evidence: `functions/src/fixedRoutes.ts`)
- Fixed route fares → Audit records: records changes (evidence: `functions/src/fixedRoutes.ts`)
- Fixed route fares → Firebase data: reads and writes (evidence: `functions/src/fixedRoutes.ts`)
