As exchange students at the University of Edinburgh, we have been keen on exploring the UK and Europe during our semester breaks. We wanted to figure out cheap trips without having to specify the number of stops.
What it does
Our app takes travel dates, origin, destination, number of desired stops and several wish list locations and provides an itinerary with the cheapest route. Given that the stops are not defined, the problem becomes a variant of the renowned TSP.
How we built it
We used the SkyScanner API to retrieve flights information and Flask as a web backend. We used some heuristics to generate the best (arguably not the cheapest) trip for the given parameters.
Challenges we ran into
We had troubles understanding SkyScanner API because the available endpoints seemed to be missing pertinent data related to flights. Additionally, due to potential firewall restrictions on university WiFi, we could not access localhost on our phones, which is why we ended up using ngork (magic!).
Accomplishments that we're proud of
Making a working app! Our results are super fast (order of a few seconds) for even 5 "anywhere" (choose whichever) locations. Also proud of the fact that we were not familiar with most of the technologies we used, and we were able to put together a functional and clean MVP.
What we learned
Lots of fancy stuff. localhost tunnelling for ngork, launching over 200 async HTTP requests, parsing JSON in Swift (who would have thought?) and eating ungodly amounts of chocolate.