# mohd-azim/frieghtfit architecture

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

- Interactive diagram: https://gitdiagram.com/mohd-azim/frieghtfit
- Repository: https://github.com/mohd-azim/frieghtfit

## Overview

Haulwise is an India-focused freight-estimation and vehicle-fit planner. A shipper enters route and cargo details in the web form or API; the application obtains route distance and time, screens configured vehicle classes for fit, calculates a per-vehicle fare breakdown, and saves a quote snapshot for later review. Location suggestions are a separate Places-backed capability, while administrators can retrieve saved estimates and inspect vehicle configuration. The graph reflects README-documented capabilities where implementation excerpts were unavailable; those links use README evidence rather than implying unsampled code was inspected.

Main entry points: [`src/main/java/com/tms/softmint/estimate/EstimateService.java`](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/EstimateService.java) (Estimate orchestration), [`src/main/java/com/tms/softmint/web/FareRestController.java`](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FareRestController.java) (Estimate API), [`src/main/java/com/tms/softmint/config/FreightProperties.java`](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/config/FreightProperties.java) (Freight settings), [`src/main/java/com/tms/softmint/web/FarePageController.java`](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FarePageController.java) (Web controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_browser["Freight form<br/>[index.html]"]
  node_page_controller["Web controller"]
  node_rest_controller["Estimate API"]
  node_form_model["Shipment form<br/>[EstimateForm.java]"]
  node_request["Estimate request"]
  node_response["Estimate response"]
  node_admin_controller["Admin page"]
end

subgraph group_estimation["Estimate workflow"]
  node_estimate_service["Estimate orchestration"]
  node_vehicle_fit["Vehicle fit"]
  node_vehicle_catalog["Vehicle catalogue"]
  node_freight_config["Freight settings"]
end

subgraph group_pricing["Pricing model"]
  node_fare_calculator["Fare calculator"]
  node_fuel_estimator["Fuel estimator<br/>[FuelEstimator.java]"]
end

subgraph group_integrations["External services"]
  node_route_client["Google route lookup"]
  node_places_client["Places suggestions"]
end

subgraph group_records["Quote records"]
  node_estimate_record["Saved estimate"]
  node_estimate_repository["Estimate repository"]
  node_mysql[("MySQL")]
end

node_shipper(("Shipper"))
node_google_maps{{"Google Maps Platform"}}

node_shipper -->|"enters shipment"| node_browser
node_browser -->|"submits form"| node_page_controller
node_page_controller -->|"binds input"| node_form_model
node_page_controller -->|"requests estimate"| node_estimate_service
node_form_model -->|"converts to"| node_request
node_rest_controller -->|"requests estimate"| node_estimate_service
node_rest_controller -->|"requests suggestions"| node_places_client
node_rest_controller -->|"lists vehicles"| node_freight_config
node_estimate_service -->|"screens options"| node_vehicle_fit
node_estimate_service -->|"reads settings"| node_freight_config
node_estimate_service -->|"prices candidates"| node_fare_calculator
node_estimate_service -->|"gets route"| node_route_client
node_vehicle_fit -.->|"uses vehicle classes"| node_vehicle_catalog
node_vehicle_catalog -->|"configures classes"| node_freight_config
node_fare_calculator -->|"estimates energy"| node_fuel_estimator
node_fare_calculator -->|"reads pricing rules"| node_freight_config
node_route_client -->|"requests route matrix"| node_google_maps
node_places_client -->|"requests suggestions"| node_google_maps
node_estimate_service -->|"saves and finds"| node_estimate_repository
node_estimate_repository -->|"persists"| node_estimate_record
node_estimate_record -.->|"stored in"| node_mysql
node_estimate_service -->|"returns quote"| node_response
node_rest_controller -->|"returns API result"| node_response
node_admin_controller -->|"reads settings"| node_freight_config
node_shipper -->|"uses estimate API"| node_rest_controller

click node_browser "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/resources/templates/index.html"
click node_page_controller "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FarePageController.java"
click node_rest_controller "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FareRestController.java"
click node_form_model "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateForm.java"
click node_request "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateRequest.java"
click node_response "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateResponse.java"
click node_estimate_service "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/EstimateService.java"
click node_vehicle_fit "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/EstimateService.java"
click node_vehicle_catalog "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/config/VehicleCatalog.java"
click node_freight_config "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/config/FreightProperties.java"
click node_fare_calculator "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/pricing/FareCalculator.java"
click node_fuel_estimator "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/pricing/FuelEstimator.java"
click node_route_client "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/routing/GoogleRoutesClient.java"
click node_places_client "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/routing/GooglePlacesClient.java"
click node_estimate_record "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/FreightEstimate.java"
click node_estimate_repository "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/FreightEstimateRepository.java"
click node_mysql "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/resources/db/migration/V1__create_freight_estimates.sql"
click node_admin_controller "https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/AdminPageController.java"

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_browser,node_page_controller,node_rest_controller,node_form_model,node_request,node_response,node_admin_controller toneBlue
class node_estimate_service,node_vehicle_fit,node_vehicle_catalog,node_freight_config toneAmber
class node_fare_calculator,node_fuel_estimator toneMint
class node_route_client,node_places_client toneRose
class node_estimate_record,node_estimate_repository,node_mysql,node_shipper,node_google_maps toneIndigo
```

## Components

### User experience

- [Freight form](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/resources/templates/index.html): `src/main/resources/templates/index.html`
- [Web controller](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FarePageController.java): `src/main/java/com/tms/softmint/web/FarePageController.java`
- [Estimate API](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/FareRestController.java): `src/main/java/com/tms/softmint/web/FareRestController.java`
- [Shipment form](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateForm.java): `src/main/java/com/tms/softmint/dto/EstimateForm.java`
- [Estimate request](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateRequest.java): `src/main/java/com/tms/softmint/dto/EstimateRequest.java`
- [Estimate response](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/dto/EstimateResponse.java): `src/main/java/com/tms/softmint/dto/EstimateResponse.java`
- [Admin page](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/web/AdminPageController.java): `src/main/java/com/tms/softmint/web/AdminPageController.java`

### Estimate workflow

- [Estimate orchestration](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/EstimateService.java): `src/main/java/com/tms/softmint/estimate/EstimateService.java`
- [Vehicle fit](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/EstimateService.java): `src/main/java/com/tms/softmint/estimate/EstimateService.java`
- [Vehicle catalogue](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/config/VehicleCatalog.java): `src/main/java/com/tms/softmint/config/VehicleCatalog.java`
- [Freight settings](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/config/FreightProperties.java): `src/main/java/com/tms/softmint/config/FreightProperties.java`

### Pricing model

- [Fare calculator](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/pricing/FareCalculator.java): `src/main/java/com/tms/softmint/pricing/FareCalculator.java`
- [Fuel estimator](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/pricing/FuelEstimator.java): `src/main/java/com/tms/softmint/pricing/FuelEstimator.java`

### External services

- [Google route lookup](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/routing/GoogleRoutesClient.java): `src/main/java/com/tms/softmint/routing/GoogleRoutesClient.java`
- [Places suggestions](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/routing/GooglePlacesClient.java): `src/main/java/com/tms/softmint/routing/GooglePlacesClient.java`

### Quote records

- [Saved estimate](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/FreightEstimate.java): `src/main/java/com/tms/softmint/estimate/FreightEstimate.java`
- [Estimate repository](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/java/com/tms/softmint/estimate/FreightEstimateRepository.java): `src/main/java/com/tms/softmint/estimate/FreightEstimateRepository.java`
- [MySQL](https://github.com/mohd-azim/frieghtfit/blob/dev/src/main/resources/db/migration/V1__create_freight_estimates.sql): `src/main/resources/db/migration/V1__create_freight_estimates.sql`

### Other components

- **Shipper**
- **Google Maps Platform**

## Connections

- Shipper → Freight form: enters shipment (evidence: `README.md`)
- Freight form → Web controller: submits form (evidence: `src/main/java/com/tms/softmint/web/FarePageController.java`)
- Web controller → Shipment form: binds input (evidence: `src/main/java/com/tms/softmint/web/FarePageController.java`)
- Web controller → Estimate orchestration: requests estimate (evidence: `src/main/java/com/tms/softmint/web/FarePageController.java`)
- Shipment form → Estimate request: converts to (evidence: `src/main/java/com/tms/softmint/dto/EstimateForm.java`)
- Estimate API → Estimate orchestration: requests estimate (evidence: `src/main/java/com/tms/softmint/web/FareRestController.java`)
- Estimate API → Places suggestions: requests suggestions (evidence: `src/main/java/com/tms/softmint/web/FareRestController.java`)
- Estimate API → Freight settings: lists vehicles (evidence: `src/main/java/com/tms/softmint/web/FareRestController.java`)
- Estimate orchestration → Vehicle fit: screens options (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Estimate orchestration → Freight settings: reads settings (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Estimate orchestration → Fare calculator: prices candidates (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Estimate orchestration → Google route lookup: gets route (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Vehicle fit → Vehicle catalogue: uses vehicle classes (evidence: `README.md`)
- Vehicle catalogue → Freight settings: configures classes (evidence: `src/main/java/com/tms/softmint/config/VehicleCatalog.java`)
- Fare calculator → Fuel estimator: estimates energy (evidence: `src/main/java/com/tms/softmint/pricing/FareCalculator.java`)
- Fare calculator → Freight settings: reads pricing rules (evidence: `src/main/java/com/tms/softmint/pricing/FareCalculator.java`)
- Google route lookup → Google Maps Platform: requests route matrix (evidence: `src/main/java/com/tms/softmint/routing/GoogleRoutesClient.java`)
- Places suggestions → Google Maps Platform: requests suggestions (evidence: `src/main/java/com/tms/softmint/routing/GooglePlacesClient.java`)
- Estimate orchestration → Estimate repository: saves and finds (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Estimate repository → Saved estimate: persists (evidence: `src/main/java/com/tms/softmint/estimate/FreightEstimateRepository.java`)
- Saved estimate → MySQL: stored in (evidence: `README.md`)
- Estimate orchestration → Estimate response: returns quote (evidence: `src/main/java/com/tms/softmint/estimate/EstimateService.java`)
- Estimate API → Estimate response: returns API result (evidence: `src/main/java/com/tms/softmint/web/FareRestController.java`)
- Admin page → Freight settings: reads settings (evidence: `src/main/java/com/tms/softmint/web/AdminPageController.java`)
- Shipper → Estimate API: uses estimate API (evidence: `README.md`)
