# sugan1605/fleetops architecture

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

- Interactive diagram: https://gitdiagram.com/sugan1605/fleetops
- Repository: https://github.com/sugan1605/fleetops

## Overview

FleetOps is a rental-operations API and domain application. Its visible API workflow serves vehicle queries and creates or retrieves reservations; reservation creation looks up customer and optional vehicle records, constructs a reservation, and persists it. The wider documented lifecycle includes rental assignment, extensions, returns, employee check-in and vehicle preparation. The API-to-reservation path is excerpted; rental services are indexed as read but not shown in full, so their connections are limited to indexed references and documented capabilities.

Main entry points: [`app/api/routes/reservation.py`](https://github.com/sugan1605/fleetops/blob/main/app/api/routes/reservation.py) (Reservation routes), [`app/repositories/reservation_repository.py`](https://github.com/sugan1605/fleetops/blob/main/app/repositories/reservation_repository.py) (Reservation repository), [`app/models/reservation.py`](https://github.com/sugan1605/fleetops/blob/main/app/models/reservation.py) (Reservations), [`app/models/vehicle.py`](https://github.com/sugan1605/fleetops/blob/main/app/models/vehicle.py) (Vehicle availability)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_app["FastAPI app<br/>[main.py]"]
  node_health["Health route<br/>[health.py]"]
  node_reservation_route["Reservation routes<br/>[reservation.py]"]
  node_vehicle_route["Vehicle routes<br/>[vehicle.py]"]
  node_reservation_schema["Reservation schema<br/>[reservation.py]"]
  node_vehicle_schema["Vehicle schema<br/>[vehicle.py]"]
end

subgraph group_domain["Rental domain"]
  node_customer["Customer validation<br/>[customer.py]"]
  node_vehicle["Vehicle availability<br/>[vehicle.py]"]
  node_reservation["Reservations<br/>[reservation.py]"]
  node_rental["Rental lifecycle<br/>[rental.py]"]
  node_reservation_service["Reservation logic"]
  node_vehicle_service["Vehicle logic<br/>[vehicle_service.py]"]
  node_rental_service["Rental operations<br/>[rental_service.py]"]
end

subgraph group_persistence["Persistence"]
  node_dependencies["Repository wiring<br/>[dependencies.py]"]
  node_customer_repo["Customer repository"]
  node_vehicle_repo["Vehicle repository"]
  node_reservation_repo["Reservation repository"]
  node_db_access["Database connection<br/>[database.py]"]
end

node_client(("API client"))
node_postgres[("PostgreSQL")]

node_client -.->|"sends requests"| node_app
node_app -->|"registers route"| node_health
node_app -->|"registers route"| node_reservation_route
node_app -->|"registers route"| node_vehicle_route
node_reservation_route -->|"uses schema"| node_reservation_schema
node_vehicle_route -->|"uses schema"| node_vehicle_schema
node_reservation_route -->|"injects repositories"| node_dependencies
node_vehicle_route -->|"injects repository"| node_dependencies
node_reservation_route -->|"looks up customer"| node_customer_repo
node_reservation_route -->|"looks up vehicle"| node_vehicle_repo
node_reservation_route -->|"constructs reservation"| node_reservation
node_reservation_route -->|"persists or retrieves"| node_reservation_repo
node_dependencies -->|"creates instance"| node_customer_repo
node_dependencies -->|"creates instance"| node_vehicle_repo
node_dependencies -->|"wires instance"| node_reservation_repo
node_reservation_repo -->|"loads customer"| node_customer_repo
node_reservation_repo -->|"loads vehicle"| node_vehicle_repo
node_customer_repo -->|"maps records"| node_customer
node_vehicle_repo -->|"maps records"| node_vehicle
node_reservation_repo -->|"maps records"| node_reservation
node_customer_repo -->|"queries database"| node_db_access
node_vehicle_repo -->|"queries database"| node_db_access
node_reservation_repo -->|"queries database"| node_db_access
node_db_access -->|"opens connection"| node_postgres
node_rental_service -->|"uses rental model"| node_rental
node_rental_service -->|"uses reservation model"| node_reservation
node_reservation_service -->|"uses reservation model"| node_reservation
node_reservation_service -->|"uses vehicle model"| node_vehicle
node_vehicle_service -->|"uses vehicle model"| node_vehicle
node_rental -->|"holds customer"| node_customer
node_rental -->|"updates vehicle"| node_vehicle
node_reservation -->|"holds customer"| node_customer
node_reservation -->|"may hold vehicle"| node_vehicle
node_rental -->|"check-in marks dirty"| node_vehicle

click node_app "https://github.com/sugan1605/fleetops/blob/main/app/main.py"
click node_health "https://github.com/sugan1605/fleetops/blob/main/app/api/routes/health.py"
click node_reservation_route "https://github.com/sugan1605/fleetops/blob/main/app/api/routes/reservation.py"
click node_vehicle_route "https://github.com/sugan1605/fleetops/blob/main/app/api/routes/vehicle.py"
click node_reservation_schema "https://github.com/sugan1605/fleetops/blob/main/app/api/schemas/reservation.py"
click node_vehicle_schema "https://github.com/sugan1605/fleetops/blob/main/app/api/schemas/vehicle.py"
click node_dependencies "https://github.com/sugan1605/fleetops/blob/main/app/dependencies.py"
click node_customer "https://github.com/sugan1605/fleetops/blob/main/app/models/customer.py"
click node_vehicle "https://github.com/sugan1605/fleetops/blob/main/app/models/vehicle.py"
click node_reservation "https://github.com/sugan1605/fleetops/blob/main/app/models/reservation.py"
click node_rental "https://github.com/sugan1605/fleetops/blob/main/app/models/rental.py"
click node_reservation_service "https://github.com/sugan1605/fleetops/blob/main/app/services/reservation_service.py"
click node_vehicle_service "https://github.com/sugan1605/fleetops/blob/main/app/services/vehicle_service.py"
click node_rental_service "https://github.com/sugan1605/fleetops/blob/main/app/services/rental_service.py"
click node_customer_repo "https://github.com/sugan1605/fleetops/blob/main/app/repositories/customer_repository.py"
click node_vehicle_repo "https://github.com/sugan1605/fleetops/blob/main/app/repositories/vehicle_repository.py"
click node_reservation_repo "https://github.com/sugan1605/fleetops/blob/main/app/repositories/reservation_repository.py"
click node_db_access "https://github.com/sugan1605/fleetops/blob/main/app/database.py"

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_health,node_reservation_route,node_vehicle_route,node_reservation_schema,node_vehicle_schema,node_client toneBlue
class node_customer,node_vehicle,node_reservation,node_rental,node_reservation_service,node_vehicle_service,node_rental_service,node_postgres toneAmber
class node_dependencies,node_customer_repo,node_vehicle_repo,node_reservation_repo,node_db_access toneMint
```

## Components

### API

- [FastAPI app](https://github.com/sugan1605/fleetops/blob/main/app/main.py): `app/main.py`
- [Health route](https://github.com/sugan1605/fleetops/blob/main/app/api/routes/health.py): `app/api/routes/health.py`
- [Reservation routes](https://github.com/sugan1605/fleetops/blob/main/app/api/routes/reservation.py): `app/api/routes/reservation.py`
- [Vehicle routes](https://github.com/sugan1605/fleetops/blob/main/app/api/routes/vehicle.py): `app/api/routes/vehicle.py`
- [Reservation schema](https://github.com/sugan1605/fleetops/blob/main/app/api/schemas/reservation.py): `app/api/schemas/reservation.py`
- [Vehicle schema](https://github.com/sugan1605/fleetops/blob/main/app/api/schemas/vehicle.py): `app/api/schemas/vehicle.py`

### Rental domain

- [Customer validation](https://github.com/sugan1605/fleetops/blob/main/app/models/customer.py): `app/models/customer.py`
- [Vehicle availability](https://github.com/sugan1605/fleetops/blob/main/app/models/vehicle.py): `app/models/vehicle.py`
- [Reservations](https://github.com/sugan1605/fleetops/blob/main/app/models/reservation.py): `app/models/reservation.py`
- [Rental lifecycle](https://github.com/sugan1605/fleetops/blob/main/app/models/rental.py): `app/models/rental.py`
- [Reservation logic](https://github.com/sugan1605/fleetops/blob/main/app/services/reservation_service.py): `app/services/reservation_service.py`
- [Vehicle logic](https://github.com/sugan1605/fleetops/blob/main/app/services/vehicle_service.py): `app/services/vehicle_service.py`
- [Rental operations](https://github.com/sugan1605/fleetops/blob/main/app/services/rental_service.py): `app/services/rental_service.py`

### Persistence

- [Repository wiring](https://github.com/sugan1605/fleetops/blob/main/app/dependencies.py): `app/dependencies.py`
- [Customer repository](https://github.com/sugan1605/fleetops/blob/main/app/repositories/customer_repository.py): `app/repositories/customer_repository.py`
- [Vehicle repository](https://github.com/sugan1605/fleetops/blob/main/app/repositories/vehicle_repository.py): `app/repositories/vehicle_repository.py`
- [Reservation repository](https://github.com/sugan1605/fleetops/blob/main/app/repositories/reservation_repository.py): `app/repositories/reservation_repository.py`
- [Database connection](https://github.com/sugan1605/fleetops/blob/main/app/database.py): `app/database.py`

### Other components

- **API client**
- **PostgreSQL**

## Connections

- API client → FastAPI app: sends requests
- FastAPI app → Health route: registers route (evidence: `app/main.py`)
- FastAPI app → Reservation routes: registers route (evidence: `app/main.py`)
- FastAPI app → Vehicle routes: registers route (evidence: `app/main.py`)
- Reservation routes → Reservation schema: uses schema (evidence: `app/api/routes/reservation.py`)
- Vehicle routes → Vehicle schema: uses schema (evidence: `app/api/routes/vehicle.py`)
- Reservation routes → Repository wiring: injects repositories (evidence: `app/api/routes/reservation.py`)
- Vehicle routes → Repository wiring: injects repository (evidence: `app/api/routes/vehicle.py`)
- Reservation routes → Customer repository: looks up customer (evidence: `app/api/routes/reservation.py`)
- Reservation routes → Vehicle repository: looks up vehicle (evidence: `app/api/routes/reservation.py`)
- Reservation routes → Reservations: constructs reservation (evidence: `app/api/routes/reservation.py`)
- Reservation routes → Reservation repository: persists or retrieves (evidence: `app/api/routes/reservation.py`)
- Repository wiring → Customer repository: creates instance (evidence: `app/dependencies.py`)
- Repository wiring → Vehicle repository: creates instance (evidence: `app/dependencies.py`)
- Repository wiring → Reservation repository: wires instance (evidence: `app/dependencies.py`)
- Reservation repository → Customer repository: loads customer (evidence: `app/repositories/reservation_repository.py`)
- Reservation repository → Vehicle repository: loads vehicle (evidence: `app/repositories/reservation_repository.py`)
- Customer repository → Customer validation: maps records (evidence: `app/repositories/customer_repository.py`)
- Vehicle repository → Vehicle availability: maps records (evidence: `app/repositories/vehicle_repository.py`)
- Reservation repository → Reservations: maps records (evidence: `app/repositories/reservation_repository.py`)
- Customer repository → Database connection: queries database (evidence: `app/repositories/customer_repository.py`)
- Vehicle repository → Database connection: queries database (evidence: `app/repositories/vehicle_repository.py`)
- Reservation repository → Database connection: queries database (evidence: `app/repositories/reservation_repository.py`)
- Database connection → PostgreSQL: opens connection (evidence: `app/database.py`)
- Rental operations → Rental lifecycle: uses rental model (evidence: `app/services/rental_service.py`)
- Rental operations → Reservations: uses reservation model (evidence: `app/services/rental_service.py`)
- Reservation logic → Reservations: uses reservation model (evidence: `app/services/reservation_service.py`)
- Reservation logic → Vehicle availability: uses vehicle model (evidence: `app/services/reservation_service.py`)
- Vehicle logic → Vehicle availability: uses vehicle model (evidence: `app/services/vehicle_service.py`)
- Rental lifecycle → Customer validation: holds customer (evidence: `app/models/rental.py`)
- Rental lifecycle → Vehicle availability: updates vehicle (evidence: `app/models/rental.py`)
- Reservations → Customer validation: holds customer (evidence: `app/models/reservation.py`)
- Reservations → Vehicle availability: may hold vehicle (evidence: `app/models/reservation.py`)
- Rental lifecycle → Vehicle availability: check-in marks dirty (evidence: `app/models/rental.py`)
