Skip to content
ONXCODE

TravelUnder NDA

Flight booking engine on Sabre GDS

Tourism company

One Angular booking engine on Sabre GDS, embedded into several travel portals and talking to each of them, with every control built from scratch.

Screenshot: Results with the filter rail: stops, departure windows, airlines and cabin, all applied instantly.
Results with the filter rail: stops, departure windows, airlines and cabin, all applied instantly.

Results

  • 1

    Booking engine shared by every portal

    A change ships everywhere at once

  • 0

    Third-party UI packages

    Every control built in-house

  • 100s

    Itineraries per search

    Rendered progressively, never all at once

The challenge

A tourism company needed flight search and booking on Sabre GDS across several separate portals. Rebuilding the same search inside each portal would have meant four copies of the same logic to maintain, and four places for a fare-rule change to go wrong. Sabre also returns large result sets, and the interface had to stay instant while filtering hundreds of itineraries.

What mattered most

  1. 1One engine for several portals
  2. 2Hundreds of results per search
  3. 3No third-party UI packages

What we built

  1. 01Architecture

    Built once, embedded everywhere

    Instead of reimplementing Sabre search in every portal, we built it once and embedded it. Each host system talks to the same booking surface in both directions, so a fix or a fare-rule change reaches all of them at once.

  2. 02Components

    No UI packages: every component is ours

    The date-range calendar, the airport picker, the traveller selector, the filter rail and the itinerary cards were all written for this product. That kept the bundle small and left no third-party upgrade to block the roadmap.

  3. 03UX

    A from/to calendar built from scratch

    Two months in view, one continuous range across them, fully keyboard operable, and aware of booking rules: a return cannot precede a departure, and disabled days still read correctly to assistive technology.

  4. 04Search

    An airport picker that actually searches

    It matches city, country, airport name and IATA code at once, so "new york", "JFK" and "Kennedy" all reach the same result, and it is debounced rather than firing a request on every keystroke.

  5. 05Performance

    Tuned for the volume Sabre returns

    Debounced inputs and throttled scrolling keep the main thread free, signals give fine-grained updates instead of broad change detection, and infinite scroll renders hundreds of itineraries progressively rather than all at once.

The outcome

One engine instead of a copy per portal: changes ship everywhere at once, and a search that returns hundreds of itineraries stays responsive. The product is under NDA, and we are happy to demo it on a call.

  • Screenshot: The search panel at rest: trip type, route, dates and travellers in a single row.
    The search panel at rest: trip type, route, dates and travellers in a single row.
  • Screenshot: The date-range calendar: two months and one continuous from/to selection, written from scratch.
    The date-range calendar: two months and one continuous from/to selection, written from scratch.
  • Screenshot: Traveller and cabin selection: adults, children, infants with and without a seat, and four cabin classes.
    Traveller and cabin selection: adults, children, infants with and without a seat, and four cabin classes.
  • Screenshot: An expanded itinerary with segments, amenities, baggage allowance, fare breakdown and fare rules.
    An expanded itinerary with segments, amenities, baggage allowance, fare breakdown and fare rules.

Let's build

Have a bottleneck worth solving?

Tell us where your platform is holding you back. A senior engineer will map the fastest route from problem to production.