# djalooo/flight-booking architecture

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

- Interactive diagram: https://gitdiagram.com/djalooo/flight-booking
- Repository: https://github.com/djalooo/flight-booking

## Overview

Skyfare is a flight-search and booking application with a Next.js frontend and a NestJS backend. The main journey is searching flights, choosing an itinerary, submitting passenger details, and receiving a confirmation; an admin view also manages bookings. The sampled code confirms the frontend API proxy and controller-to-service calls, but not the internals of the flight and booking services or their provider/database operations, so those links are left out.

Main entry points: [`Backend/src/booking/bookings.controller.ts`](https://github.com/djalooo/flight-booking/blob/main/Backend/src/booking/bookings.controller.ts) (Booking endpoints), [`Frontend/src/components/SearchCapsule.tsx`](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/components/SearchCapsule.tsx) (Flight search), [`Frontend/src/app/api/bookings/route.ts`](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/bookings/route.ts) (Booking proxy), [`Frontend/src/app/book/book.tsx`](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/book/book.tsx) (Booking form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Traveler experience"]
  node_search_ui["Flight search<br/>[SearchCapsule.tsx]"]
  node_flight_results["Flight results<br/>[FlightCard.tsx]"]
  node_booking_form["Booking form<br/>[book.tsx]"]
  node_confirmation["Confirmation<br/>[thanks.tsx]"]
  node_admin_ui["Booking admin<br/>[dashboard.tsx]"]
end

subgraph group_gateway["Frontend API"]
  node_search_api["Search proxy<br/>[route.ts]"]
  node_booking_api["Booking proxy<br/>[route.ts]"]
  node_booking_read_api["Booking lookup<br/>[route.ts]"]
  node_admin_api["Admin proxy<br/>[route.ts]"]
  node_airport_api["Airport lookup<br/>[route.ts]"]
end

subgraph group_domain["Backend services"]
  node_flights_controller["Flight endpoints"]
  node_flights_service["Flight search<br/>[flights.service.ts]"]
  node_bookings_controller["Booking endpoints"]
  node_bookings_service["Booking operations"]
end

subgraph group_data["External data"]
  node_airports_data["Airport dataset<br/>[airports.ts]"]
  node_duffel["Duffel integration<br/>[duffel.ts]"]
  node_postgres[("PostgreSQL")]
end

node_traveler(("Traveler"))

node_traveler -->|"searches"| node_search_ui
node_search_ui -->|"requests search"| node_search_api
node_search_api -->|"forwards query"| node_flights_controller
node_flights_controller -->|"calls search"| node_flights_service
node_flights_service -->|"returns flights"| node_flight_results
node_traveler -->|"selects itinerary"| node_booking_form
node_booking_form -->|"submits booking"| node_booking_api
node_booking_api -->|"forwards booking"| node_bookings_controller
node_bookings_controller -->|"calls operations"| node_bookings_service
node_booking_api -->|"returns booking"| node_confirmation
node_traveler -->|"manages bookings"| node_admin_ui
node_admin_ui -->|"requests changes"| node_admin_api
node_admin_api -->|"forwards requests"| node_bookings_controller
node_traveler -->|"looks up booking"| node_booking_read_api
node_booking_read_api -->|"forwards lookup"| node_bookings_controller
node_search_ui -->|"looks up airports"| node_airport_api
node_airport_api -->|"filters dataset"| node_airports_data

click node_search_ui "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/components/SearchCapsule.tsx"
click node_flight_results "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/components/FlightCard.tsx"
click node_booking_form "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/book/book.tsx"
click node_confirmation "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/thank-you/thanks.tsx"
click node_admin_ui "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/Admin/dashboard.tsx"
click node_search_api "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/search/route.ts"
click node_booking_api "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/bookings/route.ts"
click node_booking_read_api "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/bookings/%5Bid%5D/route.ts"
click node_admin_api "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/admin/bookings/route.ts"
click node_airport_api "https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/airports/route.ts"
click node_flights_controller "https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/flights.controller.ts"
click node_flights_service "https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/flights.service.ts"
click node_bookings_controller "https://github.com/djalooo/flight-booking/blob/main/Backend/src/booking/bookings.controller.ts"
click node_bookings_service "https://github.com/djalooo/flight-booking/blob/main/Backend/src/booking/bookings.service.ts"
click node_airports_data "https://github.com/djalooo/flight-booking/blob/main/Frontend/public/airports.ts"
click node_duffel "https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/lib/duffel.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_search_ui,node_flight_results,node_booking_form,node_confirmation,node_admin_ui toneBlue
class node_search_api,node_booking_api,node_booking_read_api,node_admin_api,node_airport_api toneAmber
class node_flights_controller,node_flights_service,node_bookings_controller,node_bookings_service toneMint
class node_airports_data,node_duffel,node_postgres toneRose
class node_traveler toneIndigo
```

## Components

### Traveler experience

- [Flight search](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/components/SearchCapsule.tsx): `Frontend/src/components/SearchCapsule.tsx`
- [Flight results](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/components/FlightCard.tsx): `Frontend/src/components/FlightCard.tsx`
- [Booking form](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/book/book.tsx): `Frontend/src/app/book/book.tsx`
- [Confirmation](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/thank-you/thanks.tsx): `Frontend/src/app/thank-you/thanks.tsx`
- [Booking admin](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/Admin/dashboard.tsx): `Frontend/src/app/Admin/dashboard.tsx`

### Frontend API

- [Search proxy](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/search/route.ts): `Frontend/src/app/api/search/route.ts`
- [Booking proxy](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/bookings/route.ts): `Frontend/src/app/api/bookings/route.ts`
- [Booking lookup](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/bookings/%5Bid%5D/route.ts): `Frontend/src/app/api/bookings/[id]/route.ts`
- [Admin proxy](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/admin/bookings/route.ts): `Frontend/src/app/api/admin/bookings/route.ts`
- [Airport lookup](https://github.com/djalooo/flight-booking/blob/main/Frontend/src/app/api/airports/route.ts): `Frontend/src/app/api/airports/route.ts`

### Backend services

- [Flight endpoints](https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/flights.controller.ts): `Backend/src/flights/flights.controller.ts`
- [Flight search](https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/flights.service.ts): `Backend/src/flights/flights.service.ts`
- [Booking endpoints](https://github.com/djalooo/flight-booking/blob/main/Backend/src/booking/bookings.controller.ts): `Backend/src/booking/bookings.controller.ts`
- [Booking operations](https://github.com/djalooo/flight-booking/blob/main/Backend/src/booking/bookings.service.ts): `Backend/src/booking/bookings.service.ts`

### External data

- [Airport dataset](https://github.com/djalooo/flight-booking/blob/main/Frontend/public/airports.ts): `Frontend/public/airports.ts`
- [Duffel integration](https://github.com/djalooo/flight-booking/blob/main/Backend/src/flights/lib/duffel.ts): `Backend/src/flights/lib/duffel.ts`
- **PostgreSQL**

### Other components

- **Traveler**

## Connections

- Traveler → Flight search: searches
- Flight search → Search proxy: requests search
- Search proxy → Flight endpoints: forwards query
- Flight endpoints → Flight search: calls search
- Flight search → Flight results: returns flights
- Traveler → Booking form: selects itinerary
- Booking form → Booking proxy: submits booking
- Booking proxy → Booking endpoints: forwards booking
- Booking endpoints → Booking operations: calls operations
- Booking proxy → Confirmation: returns booking
- Traveler → Booking admin: manages bookings
- Booking admin → Admin proxy: requests changes
- Admin proxy → Booking endpoints: forwards requests
- Traveler → Booking lookup: looks up booking
- Booking lookup → Booking endpoints: forwards lookup
- Flight search → Airport lookup: looks up airports
- Airport lookup → Airport dataset: filters dataset
