# phanindra798/loadmitra architecture

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

## Overview

LoadMitra is a two-sided freight marketplace: shippers search routes and truck types, compare full/shared/return-load estimates, and book or track loads; captains receive requests, accept loads, progress trips with OTP-gated pickup/delivery, and review earnings. Both portals use one shared API. The graph reflects the documented product scope and sampled source; unsampled route and feature wiring is represented only where the README or tree supports it. Matching and tracking sockets and payments are not implemented in this version.

Main entry points: [`server/src/routes/index.ts`](https://github.com/phanindra798/loadmitra/blob/main/server/src/routes/index.ts) (API route dispatch), [`shipper/frontend/src/routes`](https://github.com/phanindra798/loadmitra/tree/main/shipper/frontend/src/routes) (Shipper workflows), [`captain/frontend/src/routes`](https://github.com/phanindra798/loadmitra/tree/main/captain/frontend/src/routes) (Captain workflows), [`server/src/app.ts`](https://github.com/phanindra798/loadmitra/blob/main/server/src/app.ts) (HTTP application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shipper["Shipper portal"]
  node_shipper_routes["Shipper workflows"]
  node_shipper_booking["Booking state"]
  node_shipper_api["Shipper API client<br/>[api.ts]"]
  node_shipper_pricing["Estimate display<br/>[pricing.ts]"]
end

subgraph group_captain["Captain portal"]
  node_captain_routes["Captain workflows"]
  node_captain_context["Captain state"]
  node_captain_api["Captain API client<br/>[api.ts]"]
end

subgraph group_api["Shared API"]
  node_api_app["HTTP application<br/>[app.ts]"]
  node_api_routes["API route dispatch<br/>[index.ts]"]
  node_auth["OTP and profile<br/>[auth.controller.ts]"]
  node_trips["Trip lifecycle"]
end

subgraph group_domain["Marketplace services"]
  node_pricing["Pricing service<br/>[pricing.service.ts]"]
  node_earnings["Earnings service"]
  node_trucks["Truck catalogue"]
end

subgraph group_persistence["Persistence"]
  node_bookings[("Booking data<br/>[booking.model.ts]")]
  node_users[("User data<br/>[user.model.ts]")]
end

node_shipper_user(("Shipper"))
node_captain_user(("Captain"))
node_mongo[("MongoDB")]

node_shipper_user -->|"searches and books"| node_shipper_routes
node_shipper_routes -->|"updates draft"| node_shipper_booking
node_shipper_routes -->|"shows estimates"| node_shipper_pricing
node_shipper_routes -->|"requests marketplace data"| node_shipper_api
node_shipper_api -->|"calls shared API"| node_api_app
node_captain_user -->|"manages loads"| node_captain_routes
node_captain_routes -->|"uses captain state"| node_captain_context
node_captain_routes -->|"requests load and trip data"| node_captain_api
node_captain_api -->|"calls shared API"| node_api_app
node_api_app -->|"dispatches requests"| node_api_routes
node_api_routes -->|"dispatches auth"| node_auth
node_api_routes -->|"dispatches trip actions"| node_trips
node_api_routes -->|"dispatches estimates"| node_pricing
node_api_routes -->|"dispatches earnings"| node_earnings
node_api_routes -->|"dispatches catalogue"| node_trucks
node_auth -->|"reads and updates"| node_users
node_trips -->|"reads and updates"| node_bookings
node_pricing -->|"uses truck rates"| node_trucks
node_bookings -->|"persists"| node_mongo
node_users -->|"persists"| node_mongo

click node_shipper_routes "https://github.com/phanindra798/loadmitra/tree/main/shipper/frontend/src/routes"
click node_shipper_booking "https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/features/shipper/booking-context.tsx"
click node_shipper_api "https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/lib/api.ts"
click node_shipper_pricing "https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/features/shipper/pricing.ts"
click node_captain_routes "https://github.com/phanindra798/loadmitra/tree/main/captain/frontend/src/routes"
click node_captain_context "https://github.com/phanindra798/loadmitra/blob/main/captain/frontend/src/features/captain/captain-context.tsx"
click node_captain_api "https://github.com/phanindra798/loadmitra/blob/main/captain/frontend/src/lib/api.ts"
click node_api_app "https://github.com/phanindra798/loadmitra/blob/main/server/src/app.ts"
click node_api_routes "https://github.com/phanindra798/loadmitra/blob/main/server/src/routes/index.ts"
click node_auth "https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/auth.controller.ts"
click node_trips "https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/trips.controller.ts"
click node_pricing "https://github.com/phanindra798/loadmitra/blob/main/server/src/services/pricing.service.ts"
click node_earnings "https://github.com/phanindra798/loadmitra/blob/main/server/src/services/earnings.service.ts"
click node_trucks "https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/trucks.controller.ts"
click node_bookings "https://github.com/phanindra798/loadmitra/blob/main/server/src/models/booking.model.ts"
click node_users "https://github.com/phanindra798/loadmitra/blob/main/server/src/models/user.model.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_shipper_routes,node_shipper_booking,node_shipper_api,node_shipper_pricing toneBlue
class node_captain_routes,node_captain_context,node_captain_api,node_mongo toneAmber
class node_api_app,node_api_routes,node_auth,node_trips toneMint
class node_pricing,node_earnings,node_trucks toneRose
class node_bookings,node_users,node_shipper_user,node_captain_user toneIndigo
```

## Components

### Shipper portal

- [Shipper workflows](https://github.com/phanindra798/loadmitra/tree/main/shipper/frontend/src/routes): `shipper/frontend/src/routes`
- [Booking state](https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/features/shipper/booking-context.tsx): `shipper/frontend/src/features/shipper/booking-context.tsx`
- [Shipper API client](https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/lib/api.ts): `shipper/frontend/src/lib/api.ts`
- [Estimate display](https://github.com/phanindra798/loadmitra/blob/main/shipper/frontend/src/features/shipper/pricing.ts): `shipper/frontend/src/features/shipper/pricing.ts`

### Captain portal

- [Captain workflows](https://github.com/phanindra798/loadmitra/tree/main/captain/frontend/src/routes): `captain/frontend/src/routes`
- [Captain state](https://github.com/phanindra798/loadmitra/blob/main/captain/frontend/src/features/captain/captain-context.tsx): `captain/frontend/src/features/captain/captain-context.tsx`
- [Captain API client](https://github.com/phanindra798/loadmitra/blob/main/captain/frontend/src/lib/api.ts): `captain/frontend/src/lib/api.ts`

### Shared API

- [HTTP application](https://github.com/phanindra798/loadmitra/blob/main/server/src/app.ts): `server/src/app.ts`
- [API route dispatch](https://github.com/phanindra798/loadmitra/blob/main/server/src/routes/index.ts): `server/src/routes/index.ts`
- [OTP and profile](https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/auth.controller.ts): `server/src/controllers/auth.controller.ts`
- [Trip lifecycle](https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/trips.controller.ts): `server/src/controllers/trips.controller.ts`

### Marketplace services

- [Pricing service](https://github.com/phanindra798/loadmitra/blob/main/server/src/services/pricing.service.ts): `server/src/services/pricing.service.ts`
- [Earnings service](https://github.com/phanindra798/loadmitra/blob/main/server/src/services/earnings.service.ts): `server/src/services/earnings.service.ts`
- [Truck catalogue](https://github.com/phanindra798/loadmitra/blob/main/server/src/controllers/trucks.controller.ts): `server/src/controllers/trucks.controller.ts`

### Persistence

- [Booking data](https://github.com/phanindra798/loadmitra/blob/main/server/src/models/booking.model.ts): `server/src/models/booking.model.ts`
- [User data](https://github.com/phanindra798/loadmitra/blob/main/server/src/models/user.model.ts): `server/src/models/user.model.ts`

### Other components

- **Shipper**
- **Captain**
- **MongoDB**

## Connections

- Shipper → Shipper workflows: searches and books
- Shipper workflows → Booking state: updates draft
- Shipper workflows → Estimate display: shows estimates
- Shipper workflows → Shipper API client: requests marketplace data
- Shipper API client → HTTP application: calls shared API
- Captain → Captain workflows: manages loads
- Captain workflows → Captain state: uses captain state
- Captain workflows → Captain API client: requests load and trip data
- Captain API client → HTTP application: calls shared API
- HTTP application → API route dispatch: dispatches requests
- API route dispatch → OTP and profile: dispatches auth
- API route dispatch → Trip lifecycle: dispatches trip actions
- API route dispatch → Pricing service: dispatches estimates
- API route dispatch → Earnings service: dispatches earnings
- API route dispatch → Truck catalogue: dispatches catalogue
- OTP and profile → User data: reads and updates
- Trip lifecycle → Booking data: reads and updates
- Pricing service → Truck catalogue: uses truck rates
- Booking data → MongoDB: persists
- User data → MongoDB: persists
