# itsasad786/ucab architecture

> Architecture diagram of the GitHub repository itsasad786/ucab, 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/itsasad786/ucab
- Repository: https://github.com/itsasad786/ucab

## Overview

UCab is a role-based cab-booking platform with rider, driver, and admin panels. The principal flow is rider registration/login, cab selection and booking, followed by driver ride handling and status/history views; admins manage bookings, users, and the fleet. The sampled frontend context uses in-memory state mirrored to browser local storage, while the repository also contains a separate Express/MongoDB API. The excerpts do not establish that the frontend calls that API, so no client-to-server link is inferred; several panel capabilities are documented but their page wiring was not sampled.

Main entry points: [`Project_Files/src/App.jsx`](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/App.jsx) (Route application), [`Project_Files/src/context/DataContext.jsx`](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/DataContext.jsx) (Shared demo data), [`Project_Files/server/server.js`](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/server.js) (Express API server), [`Project_Files/src/context/AuthContext.jsx`](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/AuthContext.jsx) (Demo auth state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_landing["Landing experience<br/>[LandingPage.jsx]"]
  node_hero["Landing hero<br/>[Hero.jsx]"]
end

subgraph group_identity["Identity"]
  node_authpage["Sign-in and registration<br/>[AuthPage.jsx]"]
  node_authstate["Demo auth state<br/>[AuthContext.jsx]"]
  node_protected["Role route guard<br/>[App.jsx]"]
end

subgraph group_rides["Ride operations"]
  node_riderbook["Ride booking<br/>[BookRide.jsx]"]
  node_riderpanel["Rider panel<br/>[RiderDashboard.jsx]"]
  node_riderhistory["Rider history<br/>[RideHistory.jsx]"]
  node_driverpanel["Driver panel"]
  node_driverassigned["Assigned rides<br/>[AssignedRides.jsx]"]
  node_driverhistory["Driver history<br/>[DriverHistory.jsx]"]
  node_earnings["Driver earnings<br/>[Earnings.jsx]"]
end

subgraph group_management["Platform management"]
  node_adminpanel["Admin overview<br/>[AdminDashboard.jsx]"]
  node_adminbookings["Booking management<br/>[AdminBookings.jsx]"]
  node_adminusers["User management<br/>[AdminUsers.jsx]"]
  node_admincabs["Cab fleet management<br/>[AdminCabs.jsx]"]
  node_addcab["Add cab<br/>[AddCab.jsx]"]
  node_datastate["Shared demo data<br/>[DataContext.jsx]"]
end

subgraph group_backend["API and persistence"]
  node_axios["HTTP client utility<br/>[axios.js]"]
  node_api["Express API server<br/>[server.js]"]
  node_authroutes["Authentication routes<br/>[auth.js]"]
  node_bookingroutes["Booking routes<br/>[bookings.js]"]
  node_cabroutes["Cab routes<br/>[cabs.js]"]
  node_userroutes["User routes<br/>[users.js]"]
  node_middleware["JWT middleware<br/>[auth.js]"]
  node_usersmodel["User model<br/>[User.js]"]
  node_bookingmodel["Booking model<br/>[Booking.js]"]
  node_cabmodel["Cab model<br/>[Cab.js]"]
end

node_browser(("Browser user"))
node_localstorage[("Browser local storage")]
node_mongodb[("MongoDB")]

node_browser -->|"opens"| node_app
node_app -->|"routes to"| node_landing
node_app -->|"routes to"| node_authpage
node_app -->|"guards routes"| node_protected
node_app -->|"routes to"| node_riderbook
node_app -->|"routes to"| node_riderpanel
node_app -->|"routes to"| node_riderhistory
node_app -->|"routes to"| node_driverpanel
node_app -->|"routes to"| node_driverassigned
node_app -->|"routes to"| node_driverhistory
node_app -->|"routes to"| node_earnings
node_app -->|"routes to"| node_adminpanel
node_app -->|"routes to"| node_adminbookings
node_app -->|"routes to"| node_adminusers
node_app -->|"routes to"| node_admincabs
node_app -->|"routes to"| node_addcab
node_landing -->|"renders"| node_hero
node_hero -->|"navigates"| node_browser
node_authpage -->|"calls login/register"| node_authstate
node_protected -->|"reads user"| node_authstate
node_riderbook -->|"reads rider"| node_authstate
node_riderbook -->|"reads cabs; adds booking"| node_datastate
node_riderpanel -->|"reads shared data"| node_datastate
node_riderhistory -->|"reads shared data"| node_datastate
node_driverpanel -->|"reads shared data"| node_datastate
node_driverassigned -->|"uses ride data"| node_datastate
node_driverhistory -->|"reads shared data"| node_datastate
node_earnings -->|"reads ride data"| node_datastate
node_adminpanel -->|"reads shared data"| node_datastate
node_adminbookings -->|"manages bookings"| node_datastate
node_adminusers -->|"manages users"| node_datastate
node_admincabs -->|"manages cabs"| node_datastate
node_addcab -->|"adds cab"| node_datastate
node_authstate -->|"persists session/users"| node_localstorage
node_datastate -->|"persists demo data"| node_localstorage
node_api -->|"mounts"| node_authroutes
node_api -->|"mounts"| node_bookingroutes
node_api -->|"mounts"| node_cabroutes
node_api -->|"mounts"| node_userroutes
node_authroutes -->|"protects profile"| node_middleware
node_middleware -->|"loads user"| node_usersmodel
node_authroutes -->|"reads/writes users"| node_usersmodel
node_bookingroutes -->|"reads/writes bookings"| node_bookingmodel
node_cabroutes -->|"reads/writes cabs"| node_cabmodel
node_userroutes -->|"manages users"| node_usersmodel
node_api -->|"connects"| node_mongodb
node_axios -.-> node_api

click node_app "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/App.jsx"
click node_landing "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/LandingPage.jsx"
click node_hero "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/components/landing/Hero.jsx"
click node_authpage "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/auth/AuthPage.jsx"
click node_authstate "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/AuthContext.jsx"
click node_protected "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/App.jsx"
click node_riderbook "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/BookRide.jsx"
click node_riderpanel "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/RiderDashboard.jsx"
click node_riderhistory "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/RideHistory.jsx"
click node_driverpanel "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/DriverDashboard.jsx"
click node_driverassigned "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/AssignedRides.jsx"
click node_driverhistory "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/DriverHistory.jsx"
click node_earnings "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/Earnings.jsx"
click node_adminpanel "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminDashboard.jsx"
click node_adminbookings "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminBookings.jsx"
click node_adminusers "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminUsers.jsx"
click node_admincabs "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminCabs.jsx"
click node_addcab "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AddCab.jsx"
click node_datastate "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/DataContext.jsx"
click node_axios "https://github.com/itsasad786/ucab/blob/main/Project_Files/src/api/axios.js"
click node_api "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/server.js"
click node_authroutes "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/auth.js"
click node_bookingroutes "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/bookings.js"
click node_cabroutes "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/cabs.js"
click node_userroutes "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/users.js"
click node_middleware "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/middleware/auth.js"
click node_usersmodel "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/User.js"
click node_bookingmodel "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/Booking.js"
click node_cabmodel "https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/Cab.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_landing,node_hero,node_browser toneBlue
class node_authpage,node_authstate,node_protected,node_localstorage,node_mongodb toneAmber
class node_riderbook,node_riderpanel,node_riderhistory,node_driverpanel,node_driverassigned,node_driverhistory,node_earnings toneMint
class node_adminpanel,node_adminbookings,node_adminusers,node_admincabs,node_addcab,node_datastate toneRose
class node_axios,node_api,node_authroutes,node_bookingroutes,node_cabroutes,node_userroutes,node_middleware,node_usersmodel,node_bookingmodel,node_cabmodel toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/App.jsx): `Project_Files/src/App.jsx`
- [Landing experience](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/LandingPage.jsx): `Project_Files/src/pages/LandingPage.jsx`
- [Landing hero](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/components/landing/Hero.jsx): `Project_Files/src/components/landing/Hero.jsx`

### Identity

- [Sign-in and registration](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/auth/AuthPage.jsx): `Project_Files/src/pages/auth/AuthPage.jsx`
- [Demo auth state](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/AuthContext.jsx): `Project_Files/src/context/AuthContext.jsx`
- [Role route guard](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/App.jsx): `Project_Files/src/App.jsx`

### Ride operations

- [Ride booking](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/BookRide.jsx): `Project_Files/src/pages/rider/BookRide.jsx`
- [Rider panel](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/RiderDashboard.jsx): `Project_Files/src/pages/rider/RiderDashboard.jsx`
- [Rider history](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/rider/RideHistory.jsx): `Project_Files/src/pages/rider/RideHistory.jsx`
- [Driver panel](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/DriverDashboard.jsx): `Project_Files/src/pages/driver/DriverDashboard.jsx`
- [Assigned rides](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/AssignedRides.jsx): `Project_Files/src/pages/driver/AssignedRides.jsx`
- [Driver history](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/DriverHistory.jsx): `Project_Files/src/pages/driver/DriverHistory.jsx`
- [Driver earnings](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/driver/Earnings.jsx): `Project_Files/src/pages/driver/Earnings.jsx`

### Platform management

- [Admin overview](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminDashboard.jsx): `Project_Files/src/pages/admin/AdminDashboard.jsx`
- [Booking management](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminBookings.jsx): `Project_Files/src/pages/admin/AdminBookings.jsx`
- [User management](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminUsers.jsx): `Project_Files/src/pages/admin/AdminUsers.jsx`
- [Cab fleet management](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AdminCabs.jsx): `Project_Files/src/pages/admin/AdminCabs.jsx`
- [Add cab](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/pages/admin/AddCab.jsx): `Project_Files/src/pages/admin/AddCab.jsx`
- [Shared demo data](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/context/DataContext.jsx): `Project_Files/src/context/DataContext.jsx`

### API and persistence

- [HTTP client utility](https://github.com/itsasad786/ucab/blob/main/Project_Files/src/api/axios.js): `Project_Files/src/api/axios.js`
- [Express API server](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/server.js): `Project_Files/server/server.js`
- [Authentication routes](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/auth.js): `Project_Files/server/routes/auth.js`
- [Booking routes](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/bookings.js): `Project_Files/server/routes/bookings.js`
- [Cab routes](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/cabs.js): `Project_Files/server/routes/cabs.js`
- [User routes](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/routes/users.js): `Project_Files/server/routes/users.js`
- [JWT middleware](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/middleware/auth.js): `Project_Files/server/middleware/auth.js`
- [User model](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/User.js): `Project_Files/server/models/User.js`
- [Booking model](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/Booking.js): `Project_Files/server/models/Booking.js`
- [Cab model](https://github.com/itsasad786/ucab/blob/main/Project_Files/server/models/Cab.js): `Project_Files/server/models/Cab.js`

### Other components

- **Browser user**
- **Browser local storage**
- **MongoDB**

## Connections

- Browser user → Route application: opens
- Route application → Landing experience: routes to
- Route application → Sign-in and registration: routes to
- Route application → Role route guard: guards routes
- Route application → Ride booking: routes to
- Route application → Rider panel: routes to
- Route application → Rider history: routes to
- Route application → Driver panel: routes to
- Route application → Assigned rides: routes to
- Route application → Driver history: routes to
- Route application → Driver earnings: routes to
- Route application → Admin overview: routes to
- Route application → Booking management: routes to
- Route application → User management: routes to
- Route application → Cab fleet management: routes to
- Route application → Add cab: routes to
- Landing experience → Landing hero: renders
- Landing hero → Browser user: navigates
- Sign-in and registration → Demo auth state: calls login/register
- Role route guard → Demo auth state: reads user
- Ride booking → Demo auth state: reads rider
- Ride booking → Shared demo data: reads cabs; adds booking
- Rider panel → Shared demo data: reads shared data
- Rider history → Shared demo data: reads shared data
- Driver panel → Shared demo data: reads shared data
- Assigned rides → Shared demo data: uses ride data
- Driver history → Shared demo data: reads shared data
- Driver earnings → Shared demo data: reads ride data
- Admin overview → Shared demo data: reads shared data
- Booking management → Shared demo data: manages bookings
- User management → Shared demo data: manages users
- Cab fleet management → Shared demo data: manages cabs
- Add cab → Shared demo data: adds cab
- Demo auth state → Browser local storage: persists session/users
- Shared demo data → Browser local storage: persists demo data
- Express API server → Authentication routes: mounts
- Express API server → Booking routes: mounts
- Express API server → Cab routes: mounts
- Express API server → User routes: mounts
- Authentication routes → JWT middleware: protects profile
- JWT middleware → User model: loads user
- Authentication routes → User model: reads/writes users
- Booking routes → Booking model: reads/writes bookings
- Cab routes → Cab model: reads/writes cabs
- User routes → User model: manages users
- Express API server → MongoDB: connects
- HTTP client utility → Express API server
