# arnavvvvvvvvvv/carrental architecture

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

- Interactive diagram: https://gitdiagram.com/arnavvvvvvvvvv/carrental
- Repository: https://github.com/arnavvvvvvvvvv/carrental

## Overview

A full-stack car-rental platform: renters browse cars, check date/location availability, book, and review booking history; vehicle owners list cars, manage availability and bookings, and view dashboard statistics. The graph follows the documented client routes and sampled server dispatch, controller, and model interactions. Some page-level API wiring is not sampled, so those links are omitted.

Main entry points: [`client/src/App.jsx`](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/App.jsx) (App routes), [`client/src/pages/owner/Layout.jsx`](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/Layout.jsx) (Owner portal), [`server/controllers/ownerController.js`](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/ownerController.js) (Owner services), [`server/server.js`](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/server.js) (Express server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_app["App routes<br/>[App.jsx]"]
  node_context["App context<br/>[AppContext.jsx]"]
  node_browse["Browse cars<br/>[Cars.jsx]"]
  node_details["Car details<br/>[CarDetails.jsx]"]
  node_home["Home page<br/>[Home.jsx]"]
  node_bookings["Booking history<br/>[MyBookings.jsx]"]
  node_ownerui["Owner portal<br/>[Layout.jsx]"]
  node_dashboard["Owner dashboard<br/>[Dashboard.jsx]"]
  node_addcar["Add a car<br/>[AddCar.jsx]"]
  node_managecars["Manage cars<br/>[ManageCars.jsx]"]
  node_managebookings["Manage bookings<br/>[ManageBookings.jsx]"]
end

subgraph group_api["API and access"]
  node_server["Express server<br/>[server.js]"]
  node_usersroute["User routes<br/>[userRoutes.js]"]
  node_ownersroute["Owner routes<br/>[ownerRoutes.js]"]
  node_bookingroute["Booking routes<br/>[bookingRoutes.js]"]
  node_auth["Auth middleware<br/>[auth.js]"]
end

subgraph group_domain["Rental domain"]
  node_userctrl["User services<br/>[userController.js]"]
  node_ownerctrl["Owner services<br/>[ownerController.js]"]
  node_bookingctrl["Booking services"]
  node_userdb[("User records<br/>[User.js]")]
  node_cardb[("Car records<br/>[Car.js]")]
  node_bookingdb[("Booking records<br/>[Booking.js]")]
end

subgraph group_integrations["External services"]
  node_dbconfig["Database connection<br/>[db.js]"]
  node_mongodb[("MongoDB")]
  node_imagekitconfig["ImageKit client<br/>[imageKit.js]"]
  node_imagekit["ImageKit"]
end

node_renter(("Renter"))
node_owner(("Vehicle owner"))

node_renter -->|"uses"| node_app
node_owner -->|"uses"| node_app
node_app -->|"routes"| node_home
node_app -->|"routes"| node_browse
node_app -->|"routes"| node_details
node_app -->|"routes"| node_bookings
node_app -->|"routes"| node_ownerui
node_ownerui -->|"routes"| node_dashboard
node_ownerui -->|"routes"| node_addcar
node_ownerui -->|"routes"| node_managecars
node_ownerui -->|"routes"| node_managebookings
node_app -->|"reads state"| node_context
node_context -->|"requests data"| node_usersroute
node_server -->|"mounts"| node_usersroute
node_server -->|"mounts"| node_ownersroute
node_server -->|"mounts"| node_bookingroute
node_server -->|"connects"| node_dbconfig
node_usersroute -->|"dispatches"| node_userctrl
node_ownersroute -->|"dispatches"| node_ownerctrl
node_bookingroute -->|"dispatches"| node_bookingctrl
node_usersroute -->|"protects routes"| node_auth
node_ownersroute -->|"protects routes"| node_auth
node_bookingroute -->|"protects routes"| node_auth
node_auth -->|"loads user"| node_userdb
node_userctrl -->|"reads/writes"| node_userdb
node_userctrl -->|"lists cars"| node_cardb
node_ownerctrl -->|"updates user"| node_userdb
node_ownerctrl -->|"manages cars"| node_cardb
node_ownerctrl -->|"reads bookings"| node_bookingdb
node_ownerctrl -->|"uploads images"| node_imagekitconfig
node_bookingctrl -->|"checks and writes"| node_bookingdb
node_bookingctrl -->|"checks car"| node_cardb
node_dbconfig -->|"connects"| node_mongodb
node_imagekitconfig -->|"uploads media"| node_imagekit

click node_app "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/App.jsx"
click node_context "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/context/AppContext.jsx"
click node_browse "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/Cars.jsx"
click node_details "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/CarDetails.jsx"
click node_home "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/Home.jsx"
click node_bookings "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/MyBookings.jsx"
click node_ownerui "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/Layout.jsx"
click node_dashboard "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/Dashboard.jsx"
click node_addcar "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/AddCar.jsx"
click node_managecars "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/ManageCars.jsx"
click node_managebookings "https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/ManageBookings.jsx"
click node_server "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/server.js"
click node_usersroute "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/userRoutes.js"
click node_ownersroute "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/ownerRoutes.js"
click node_bookingroute "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/bookingRoutes.js"
click node_auth "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/middleware/auth.js"
click node_userctrl "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/userController.js"
click node_ownerctrl "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/ownerController.js"
click node_bookingctrl "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/bookingController.js"
click node_userdb "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/User.js"
click node_cardb "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/Car.js"
click node_bookingdb "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/Booking.js"
click node_dbconfig "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/configs/db.js"
click node_imagekitconfig "https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/configs/imageKit.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_context,node_browse,node_details,node_home,node_bookings,node_ownerui,node_dashboard,node_addcar,node_managecars,node_managebookings toneBlue
class node_server,node_usersroute,node_ownersroute,node_bookingroute,node_auth toneAmber
class node_userctrl,node_ownerctrl,node_bookingctrl,node_userdb,node_cardb,node_bookingdb toneMint
class node_dbconfig,node_mongodb,node_imagekitconfig,node_imagekit toneRose
class node_renter,node_owner toneIndigo
```

## Components

### Client experience

- [App routes](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [App context](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/context/AppContext.jsx): `client/src/context/AppContext.jsx`
- [Browse cars](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/Cars.jsx): `client/src/pages/Cars.jsx`
- [Car details](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/CarDetails.jsx): `client/src/pages/CarDetails.jsx`
- [Home page](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/Home.jsx): `client/src/pages/Home.jsx`
- [Booking history](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/MyBookings.jsx): `client/src/pages/MyBookings.jsx`
- [Owner portal](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/Layout.jsx): `client/src/pages/owner/Layout.jsx`
- [Owner dashboard](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/Dashboard.jsx): `client/src/pages/owner/Dashboard.jsx`
- [Add a car](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/AddCar.jsx): `client/src/pages/owner/AddCar.jsx`
- [Manage cars](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/ManageCars.jsx): `client/src/pages/owner/ManageCars.jsx`
- [Manage bookings](https://github.com/arnavvvvvvvvvv/carrental/blob/main/client/src/pages/owner/ManageBookings.jsx): `client/src/pages/owner/ManageBookings.jsx`

### API and access

- [Express server](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/server.js): `server/server.js`
- [User routes](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/userRoutes.js): `server/routes/userRoutes.js`
- [Owner routes](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/ownerRoutes.js): `server/routes/ownerRoutes.js`
- [Booking routes](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/routes/bookingRoutes.js): `server/routes/bookingRoutes.js`
- [Auth middleware](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/middleware/auth.js): `server/middleware/auth.js`

### Rental domain

- [User services](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/userController.js): `server/controllers/userController.js`
- [Owner services](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/ownerController.js): `server/controllers/ownerController.js`
- [Booking services](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/controllers/bookingController.js): `server/controllers/bookingController.js`
- [User records](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/User.js): `server/models/User.js`
- [Car records](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/Car.js): `server/models/Car.js`
- [Booking records](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/models/Booking.js): `server/models/Booking.js`

### External services

- [Database connection](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/configs/db.js): `server/configs/db.js`
- **MongoDB**
- [ImageKit client](https://github.com/arnavvvvvvvvvv/carrental/blob/main/server/configs/imageKit.js): `server/configs/imageKit.js`
- **ImageKit**

### Other components

- **Renter**
- **Vehicle owner**

## Connections

- Renter → App routes: uses
- Vehicle owner → App routes: uses
- App routes → Home page: routes
- App routes → Browse cars: routes
- App routes → Car details: routes
- App routes → Booking history: routes
- App routes → Owner portal: routes
- Owner portal → Owner dashboard: routes
- Owner portal → Add a car: routes
- Owner portal → Manage cars: routes
- Owner portal → Manage bookings: routes
- App routes → App context: reads state
- App context → User routes: requests data
- Express server → User routes: mounts
- Express server → Owner routes: mounts
- Express server → Booking routes: mounts
- Express server → Database connection: connects
- User routes → User services: dispatches
- Owner routes → Owner services: dispatches
- Booking routes → Booking services: dispatches
- User routes → Auth middleware: protects routes
- Owner routes → Auth middleware: protects routes
- Booking routes → Auth middleware: protects routes
- Auth middleware → User records: loads user
- User services → User records: reads/writes
- User services → Car records: lists cars
- Owner services → User records: updates user
- Owner services → Car records: manages cars
- Owner services → Booking records: reads bookings
- Owner services → ImageKit client: uploads images
- Booking services → Booking records: checks and writes
- Booking services → Car records: checks car
- Database connection → MongoDB: connects
- ImageKit client → ImageKit: uploads media
