Before SkyScanner even announced a possibly prize for the usage of their API, it was obvious that access to their API could be very powerful. In the minutes after the the end of the Opening Ceremony, it became obvious that creating a social plane ticket app would be something genuinely useful for, especially for us, students, who have friends from around world, from so many countries it's hard to remember to you've visited and who has been left out. With this in mind we were inspired to create Dérive.

What it does

Dérive is a social flight booking app. It uses Facebook as a basis for it's data, gathering the user's own check-ins, to know what cities he/she has visited. Simultaneously, it uses the same access the gather the 'lives in' data on the user's friends. Thanks to this we know countries where the user hasn't been but has friends. We then list these countries for the user to choose his/her next destination. Once the users decides we present all available flights from the current location to the target country, with the SkyScanner API, with the option to show a small wiki of the city in question, by presenting a map and a small blurb bout the city from WikiTravel. As a fun plus to our app, we created a simply WatchKit app, that can randomly assign you a country to visit if you can't choose.

How we built it

We realised early that the app will be a challenging one so we split it up into 4 parts. Natalya worked on the image data which we initally tried getting from Foursquare but in the end resorting to google places/images. Jakub worked on gethering the wiki data from wikitravel. Both of them being completely new to Swift and iOS. Samuel worked on the Facebook API access and later on the UI of the app. David worked on the SkyScanner API and digesting the incoming data. We used CocoaPods to help us deal with network calls faster and with less hassle.

Challenges we ran into

We ran into a number of challenges. Two of the four member team had no experience with iOS or Swift therefore they attended the Swift workshop. Early on we decided to use CocoaPods to save time and energy, but as none of us has used it before, we ran into phantom errors on some machines which didn't appear on the others. We found out that the Facebook API is much less flexible then thought with it only allowing access to user list if the user also has the app downloaded. Due to this for the hackathon we hardcoded locations and people. The Foursquare API was also a disappointment, being too hard to effectively use in 24 hours therefore we switched to google's API. Finally, none of us has ever written a WatchKit app, therefore making sure it doesn't kill our app and it works properly needed extra precautions.

Accomplishments that we're proud of

We are proud of the app as a whole but there is more. We met here, literally over 5 seconds at the team-making event, nonetheless we became a well oiled machine in minutes. We worked together to solve problems such as CocoaPods and teach each other Swift and JSON serialisation. We survived the sleeplessness of the hackathon, while creating an app which non of us could have imagined creating in a week, much less in 24 hours.

What we learned

We learned (more) about Swift and WatchKit. As well as Facebook's, Foursquare's, WikiTravel's and Google's APIs. We learned to use (and hate) CocoaPods.

What's next for Dérive

We had big plans we know we couldn't accomplish in 24 hours. At some point for a few hours we had a version of the app which used P2pKit's local discover API to find your friends when they get close by in the city you are just visiting. We wanted to expand upon this using their beta functionality to guide you to your friends in unknown cities. For the hackathon we stayed simple and used cached data from SkyScanner, we'd want to include full live functionality with the power to buy the tickets. Lastly, for our app to be truly functional we would need a lot of users. The more users the more data we could get from Facebook, without hardcoding it. Therefore getting it on as many phones as possibly would be a next big step.

Share this project: