# gkishan5499/compareauto architecture

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

## Overview

CompareAuto is a vehicle-discovery and ownership-research platform with a public site, an administrative console, and an API. The main user journey moves from browsing or searching vehicles to reviewing model and variant details, specifications, comparisons, prices, and dealer or enquiry options; news, used and upcoming cars, and calculators are distinct supporting capabilities. The backend exposes these domains through Express routes and persists catalog and content records in MongoDB models. The tree and excerpts support the application boundaries and selected controller behavior; wiring within unsampled frontend pages and most backend domains is not asserted.

Main entry points: [`frontend/src/App.tsx`](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/App.tsx) (Public app), [`backend/src/controllers/space/specsCSV.controller.ts`](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/space/specsCSV.controller.ts) (Specs CSV import), [`backend/src/app.ts`](https://github.com/gkishan5499/compareauto/blob/master/backend/src/app.ts) (API application), [`backend/src/controllers/variant.controller.ts`](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/variant.controller.ts) (Variant controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public discovery"]
  node_frontend["Public app<br/>[App.tsx]"]
  node_browse["Browse vehicles<br/>[Index.tsx]"]
  node_catalog["Brands and models<br/>[BrandModels.tsx]"]
  node_details["Model and variant<br/>[ModelOverview.tsx]"]
  node_compare["Compare cars<br/>[Compare.tsx]"]
  node_tools["Pricing tools<br/>[Tools.tsx]"]
  node_used["Used cars<br/>[UsedCars.tsx]"]
  node_editorial["News and launches<br/>[News.tsx]"]
  node_lead["Enquiry form<br/>[EnquiryForm.tsx]"]
end

subgraph group_api["Backend API"]
  node_apiapp["API application<br/>[app.ts]"]
  node_search["Search endpoints<br/>[search.routes.ts]"]
  node_review["Review endpoints<br/>[review.routes.ts]"]
  node_variantctrl["Variant controller"]
  node_specctrl["Specifications controller"]
  node_speccsv["Specs CSV import"]
  node_enquiryctrl["Enquiry controller"]
end

subgraph group_admin["Administration"]
  node_adminapp["Admin console<br/>[App.tsx]"]
  node_adminroutes["Admin route map<br/>[AppRoutes.tsx]"]
  node_heroadmin["Carousel manager"]
end

subgraph group_state["Domain state"]
  node_catalogdb[("Catalog records<br/>[CarModel.model.ts]")]
  node_branddb[("Brand records<br/>[Brand.model.ts]")]
  node_variantdb[("Variant records<br/>[Variant.model.ts]")]
  node_specdb[("Vehicle specifications<br/>[CarSpecs.model.ts]")]
  node_reviewdb[("Review records<br/>[Review.model.ts]")]
  node_enquirydb[("Enquiry records<br/>[Enquiry.model.ts]")]
end

node_shopper(("Vehicle shopper"))

node_shopper -->|"uses"| node_frontend
node_frontend -->|"routes to"| node_browse
node_frontend -->|"routes to"| node_catalog
node_frontend -->|"routes to"| node_details
node_frontend -->|"routes to"| node_compare
node_frontend -->|"routes to"| node_tools
node_frontend -->|"routes to"| node_used
node_frontend -->|"routes to"| node_editorial
node_frontend -->|"renders"| node_lead
node_apiapp -->|"mounts"| node_search
node_apiapp -->|"mounts"| node_review
node_review -->|"dispatches"| node_reviewdb
node_variantctrl -->|"reads/writes"| node_variantdb
node_variantctrl -->|"upserts specs"| node_specdb
node_speccsv -->|"looks up"| node_branddb
node_speccsv -->|"looks up"| node_catalogdb
node_speccsv -->|"reads/writes"| node_variantdb
node_speccsv -->|"creates specs"| node_specdb
node_enquiryctrl -->|"persists enquiry"| node_enquirydb
node_adminapp -->|"routes to"| node_adminroutes
node_adminroutes -->|"protects route"| node_heroadmin
node_heroadmin -->|"posts API requests"| node_apiapp

click node_frontend "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/App.tsx"
click node_browse "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Index.tsx"
click node_catalog "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/BrandModels.tsx"
click node_details "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/ModelOverview.tsx"
click node_compare "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Compare.tsx"
click node_tools "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Tools.tsx"
click node_used "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/UsedCars.tsx"
click node_editorial "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/News.tsx"
click node_lead "https://github.com/gkishan5499/compareauto/blob/master/frontend/src/components/enquiry/EnquiryForm.tsx"
click node_apiapp "https://github.com/gkishan5499/compareauto/blob/master/backend/src/app.ts"
click node_search "https://github.com/gkishan5499/compareauto/blob/master/backend/src/routes/search.routes.ts"
click node_review "https://github.com/gkishan5499/compareauto/blob/master/backend/src/routes/review.routes.ts"
click node_variantctrl "https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/variant.controller.ts"
click node_specctrl "https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/space/specs.controller.ts"
click node_speccsv "https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/space/specsCSV.controller.ts"
click node_enquiryctrl "https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/enquiry.controller.ts"
click node_adminapp "https://github.com/gkishan5499/compareauto/blob/master/admin/src/App.tsx"
click node_adminroutes "https://github.com/gkishan5499/compareauto/blob/master/admin/src/routes/AppRoutes.tsx"
click node_heroadmin "https://github.com/gkishan5499/compareauto/blob/master/admin/src/pages/HeroCarousel/HeroCarouselManager.tsx"
click node_catalogdb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/CarModel.model.ts"
click node_branddb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Brand.model.ts"
click node_variantdb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Variant.model.ts"
click node_specdb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/carSpace/CarSpecs.model.ts"
click node_reviewdb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Review.model.ts"
click node_enquirydb "https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Enquiry.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_frontend,node_browse,node_catalog,node_details,node_compare,node_tools,node_used,node_editorial,node_lead toneBlue
class node_apiapp,node_search,node_review,node_variantctrl,node_specctrl,node_speccsv,node_enquiryctrl toneAmber
class node_adminapp,node_adminroutes,node_heroadmin toneMint
class node_catalogdb,node_branddb,node_variantdb,node_specdb,node_reviewdb,node_enquirydb toneRose
class node_shopper toneIndigo
```

## Components

### Public discovery

- [Public app](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Browse vehicles](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Index.tsx): `frontend/src/pages/Index.tsx`
- [Brands and models](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/BrandModels.tsx): `frontend/src/pages/BrandModels.tsx`
- [Model and variant](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/ModelOverview.tsx): `frontend/src/pages/ModelOverview.tsx`
- [Compare cars](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Compare.tsx): `frontend/src/pages/Compare.tsx`
- [Pricing tools](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/Tools.tsx): `frontend/src/pages/Tools.tsx`
- [Used cars](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/UsedCars.tsx): `frontend/src/pages/UsedCars.tsx`
- [News and launches](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/pages/News.tsx): `frontend/src/pages/News.tsx`
- [Enquiry form](https://github.com/gkishan5499/compareauto/blob/master/frontend/src/components/enquiry/EnquiryForm.tsx): `frontend/src/components/enquiry/EnquiryForm.tsx`

### Backend API

- [API application](https://github.com/gkishan5499/compareauto/blob/master/backend/src/app.ts): `backend/src/app.ts`
- [Search endpoints](https://github.com/gkishan5499/compareauto/blob/master/backend/src/routes/search.routes.ts): `backend/src/routes/search.routes.ts`
- [Review endpoints](https://github.com/gkishan5499/compareauto/blob/master/backend/src/routes/review.routes.ts): `backend/src/routes/review.routes.ts`
- [Variant controller](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/variant.controller.ts): `backend/src/controllers/variant.controller.ts`
- [Specifications controller](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/space/specs.controller.ts): `backend/src/controllers/space/specs.controller.ts`
- [Specs CSV import](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/space/specsCSV.controller.ts): `backend/src/controllers/space/specsCSV.controller.ts`
- [Enquiry controller](https://github.com/gkishan5499/compareauto/blob/master/backend/src/controllers/enquiry.controller.ts): `backend/src/controllers/enquiry.controller.ts`

### Administration

- [Admin console](https://github.com/gkishan5499/compareauto/blob/master/admin/src/App.tsx): `admin/src/App.tsx`
- [Admin route map](https://github.com/gkishan5499/compareauto/blob/master/admin/src/routes/AppRoutes.tsx): `admin/src/routes/AppRoutes.tsx`
- [Carousel manager](https://github.com/gkishan5499/compareauto/blob/master/admin/src/pages/HeroCarousel/HeroCarouselManager.tsx): `admin/src/pages/HeroCarousel/HeroCarouselManager.tsx`

### Domain state

- [Catalog records](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/CarModel.model.ts): `backend/src/models/CarModel.model.ts`
- [Brand records](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Brand.model.ts): `backend/src/models/Brand.model.ts`
- [Variant records](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Variant.model.ts): `backend/src/models/Variant.model.ts`
- [Vehicle specifications](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/carSpace/CarSpecs.model.ts): `backend/src/models/carSpace/CarSpecs.model.ts`
- [Review records](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Review.model.ts): `backend/src/models/Review.model.ts`
- [Enquiry records](https://github.com/gkishan5499/compareauto/blob/master/backend/src/models/Enquiry.model.ts): `backend/src/models/Enquiry.model.ts`

### Other components

- **Vehicle shopper**

## Connections

- Vehicle shopper → Public app: uses
- Public app → Browse vehicles: routes to
- Public app → Brands and models: routes to
- Public app → Model and variant: routes to
- Public app → Compare cars: routes to
- Public app → Pricing tools: routes to
- Public app → Used cars: routes to
- Public app → News and launches: routes to
- Public app → Enquiry form: renders
- API application → Search endpoints: mounts
- API application → Review endpoints: mounts
- Review endpoints → Review records: dispatches
- Variant controller → Variant records: reads/writes
- Variant controller → Vehicle specifications: upserts specs
- Specs CSV import → Brand records: looks up
- Specs CSV import → Catalog records: looks up
- Specs CSV import → Variant records: reads/writes
- Specs CSV import → Vehicle specifications: creates specs
- Enquiry controller → Enquiry records: persists enquiry
- Admin console → Admin route map: routes to
- Admin route map → Carousel manager: protects route
- Carousel manager → API application: posts API requests
