# anjishnu-nandi-2007/serpapi-project architecture

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

- Interactive diagram: https://gitdiagram.com/anjishnu-nandi-2007/serpapi-project
- Repository: https://github.com/anjishnu-nandi-2007/serpapi-project

## Overview

GONTOBBO is a travel-discovery web app for hotel, flight, and combined searches. Users enter travel criteria in the frontend; the FastAPI app routes requests to search services, which query SerpApi and return normalized options. Authentication and user persistence are a separate backend capability. The graph follows documented and indexed references; frontend-to-backend wiring and some unsampled route details are shown only where the README supports them.

Main entry points: [`GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py) (Travel routes), [`GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py) (Flight search), [`GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py`](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py) (Hotel search), [`GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py`](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py) (Combined search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Travel interface"]
  node_frontend["Travel dashboard"]
end

subgraph group_api["API and identity"]
  node_app["FastAPI application<br/>[main.py]"]
  node_travel_routes["Travel routes<br/>[travel.py]"]
  node_auth_routes["Authentication routes<br/>[auth.py]"]
  node_users["User services<br/>[users.py]"]
  node_config["Backend config<br/>[config.py]"]
end

subgraph group_search["Search services"]
  node_flight_search["Flight search<br/>[flights.py]"]
  node_hotel_search["Hotel search<br/>[hotels.py]"]
  node_combined_search["Combined search<br/>[travel_search.py]"]
  node_airport_resolver["Airport resolution"]
  node_normalization["Result normalization<br/>[normalization.py]"]
  node_serp_client["SerpApi client<br/>[serpapi_client.py]"]
end

subgraph group_contracts["Models and storage"]
  node_flight_model["Flight contracts<br/>[flight.py]"]
  node_hotel_model["Hotel contracts<br/>[hotel.py]"]
  node_travel_model["Travel contracts<br/>[travel.py]"]
  node_database[("User database<br/>[db.py]")]
end

node_traveler(("Traveler"))
node_serpapi{{"SerpApi"}}

node_traveler -->|"enters criteria"| node_frontend
node_frontend -->|"sends searches"| node_app
node_app -->|"registers routes"| node_travel_routes
node_app -->|"registers routes"| node_auth_routes
node_travel_routes -->|"executes combined"| node_combined_search
node_combined_search -->|"dispatches flights"| node_flight_search
node_combined_search -->|"dispatches hotels"| node_hotel_search
node_flight_search -->|"resolves airports"| node_airport_resolver
node_flight_search -->|"queries client"| node_serp_client
node_hotel_search -->|"queries client"| node_serp_client
node_flight_search -->|"uses helpers"| node_normalization
node_hotel_search -->|"uses helpers"| node_normalization
node_serp_client -->|"sends requests"| node_serpapi
node_serp_client -->|"reads settings"| node_config
node_auth_routes -->|"uses user services"| node_users
node_auth_routes -->|"uses database"| node_database
node_users -->|"uses database"| node_database
node_travel_routes -->|"validates requests"| node_flight_model
node_travel_routes -->|"validates requests"| node_hotel_model
node_travel_routes -->|"validates requests"| node_travel_model
node_combined_search -->|"returns contract"| node_travel_model
node_flight_search -->|"produces results"| node_flight_model
node_hotel_search -->|"produces results"| node_hotel_model

click node_frontend "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/frontend/integration-bridge.js"
click node_app "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/main.py"
click node_travel_routes "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py"
click node_auth_routes "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/auth.py"
click node_users "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/users.py"
click node_flight_search "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py"
click node_hotel_search "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py"
click node_combined_search "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py"
click node_airport_resolver "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/airport_resolver.py"
click node_normalization "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/utils/normalization.py"
click node_serp_client "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/serpapi_client.py"
click node_flight_model "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/flight.py"
click node_hotel_model "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/hotel.py"
click node_travel_model "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/travel.py"
click node_config "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/config.py"
click node_database "https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/db.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_frontend toneBlue
class node_app,node_travel_routes,node_auth_routes,node_users,node_config toneAmber
class node_flight_search,node_hotel_search,node_combined_search,node_airport_resolver,node_normalization,node_serp_client,node_serpapi toneMint
class node_flight_model,node_hotel_model,node_travel_model,node_database toneRose
class node_traveler toneIndigo
```

## Components

### Travel interface

- [Travel dashboard](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/frontend/integration-bridge.js): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/frontend/integration-bridge.js`

### API and identity

- [FastAPI application](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/main.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/main.py`
- [Travel routes](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`
- [Authentication routes](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/auth.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/auth.py`
- [User services](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/users.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/users.py`
- [Backend config](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/config.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/config.py`

### Search services

- [Flight search](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`
- [Hotel search](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py`
- [Combined search](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py`
- [Airport resolution](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/airport_resolver.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/airport_resolver.py`
- [Result normalization](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/utils/normalization.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/utils/normalization.py`
- [SerpApi client](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/serpapi_client.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/serpapi_client.py`

### Models and storage

- [Flight contracts](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/flight.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/flight.py`
- [Hotel contracts](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/hotel.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/hotel.py`
- [Travel contracts](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/travel.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/models/travel.py`
- [User database](https://github.com/anjishnu-nandi-2007/serpapi-project/blob/main/GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/db.py): `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/db.py`

### Other components

- **Traveler**
- **SerpApi**

## Connections

- Traveler → Travel dashboard: enters criteria (evidence: `README.md`)
- Travel dashboard → FastAPI application: sends searches (evidence: `README.md`)
- FastAPI application → Travel routes: registers routes (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/main.py`)
- FastAPI application → Authentication routes: registers routes (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/main.py`)
- Travel routes → Combined search: executes combined (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`)
- Combined search → Flight search: dispatches flights (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py`)
- Combined search → Hotel search: dispatches hotels (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py`)
- Flight search → Airport resolution: resolves airports (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`)
- Flight search → SerpApi client: queries client (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`)
- Hotel search → SerpApi client: queries client (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py`)
- Flight search → Result normalization: uses helpers (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`)
- Hotel search → Result normalization: uses helpers (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py`)
- SerpApi client → SerpApi: sends requests (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/serpapi_client.py`)
- SerpApi client → Backend config: reads settings (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/serpapi_client.py`)
- Authentication routes → User services: uses user services (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/auth.py`)
- Authentication routes → User database: uses database (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/auth.py`)
- User services → User database: uses database (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/users.py`)
- Travel routes → Flight contracts: validates requests (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`)
- Travel routes → Hotel contracts: validates requests (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`)
- Travel routes → Travel contracts: validates requests (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/api/routes/travel.py`)
- Combined search → Travel contracts: returns contract (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/travel_search.py`)
- Flight search → Flight contracts: produces results (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/flights.py`)
- Hotel search → Hotel contracts: produces results (evidence: `GONTOBBO_live_hardened/GONTOBBO_live_hardened/GONTOBBO-Latest/connected/backend/app/services/hotels.py`)
