# iJetBlue, for YHack 2015

iJetBlue makes finding flights that meet your personalized needs a breeze.
Created for YHack 2015, iJetBlue is capable of processing a large amount
of flight data, and ranks and outputs flights using a custom weighting
algorithm. It also comes with a native iOS and Android app, which lets
users seamlessly and infinitely scroll through selected flights until one
meets their preferences.

## Tech Stack

React Native, MongoDB, Node.js with Express, Python

## Hackers

Kenny Smith, Oleg Vaskevich, Kevin Yang (Northeastern University)

## Data

All Excel spreadsheet data can be found [here](https://drive.google.com/file/d/0B-ddf2SdUe0FTU5BUkROMzlFXzQ/view?usp=sharing). A further description of the prizes can be found [here](https://drive.google.com/file/d/0B-ddf2SdUe0Fb2ZZNDVwOVJVTVE/view?usp=sharing). A zipped file of the data can be found [here](https://drive.google.com/file/d/0B-ddf2SdUe0FN1d2ZUV6Q1dKT1E/view?usp=sharing).

## Users

Per challenge specifications, iJetBlue comes pre-set with three users:

**User 1:** Adult from Orlando (ORD), Florida. They want to search for deals to destinations with preferences in this order: Nightlife, Romance, Beach. They prefer something in the Caribbean, The South or West Coast in that order. The budget is under $500. They only want Non-Stops. They only want to fly between Jan-Mar.

**User 2:** Adult from Las Vegas (LAX), California. They want deals to the Northeast with preferences in the following order: Boston (BOS), then anywhere in Northeast. They prefer destinations that cater to Family, Romance, and Exploration. The budget is $300 and they don’t mind connecting flights. They wish to fly Feb 2nd.

**User 3:** Adult from New York (JFK), New York. They want deals to warm places. They prefer destinations in the following order: Beach, Family, Exploration. The budget is $150. They have no preference on region. They prefer nonstop but ok with connecting but do not want to fly international. They are ok with any date. This user actually would like deals from any city.
## Inspiration

The social media newsfeed, known for viewing the flawless lives of our peers, has no shortage of gorgeous vacation and travel photos. We want to travel to these exotic places and explore the world. We want to visit the museums of Paris, the mountains of Nepal, and experience the stunning seafood of Japan. Masses of young adults share this sentiment, but travelling is often expensive and out of reach. However, many of these experiences can be replicated closer to home and for a lot less with JetBlue’s low fares. You might not have the $15,000 needed to climb Mount Kilimanjaro this year, but you can climb a 20,000’ volcano in Ecuador for under $2,000 during spring break. Let’s make it happen!

## What it does

Our IOS app begins with the user providing a photo of a place that they would like to visit on a specific date, it can be a faraway place in the South Pacific or just a friend’s vacation photo on Instagram. We extract key characteristics of the destination using Google’s Vision API. Then, the characteristics are used to match the user with a destination that closely resembles the one shown in the original photo. This is done by comparing keywords with a dataset we created by using JetBlue’s destinations list, a common set of tourism characteristics, and synonyms that we found the API to use. Finally, using JetBlue’s low fares, the user is given a result of the 4 cheapest, and most suitable destinations on their chosen date. They also get a couple of points of interest for each destination as a bonus. Affordable vacation planning made easy!

## How we built it

We began by looking for an API that would help us with image processing – this resulted in choosing Google Vision to generate key words for any given destination. Then, we compiled a large dataset of destination information to compliment the JetBlue low fares spreadsheet. Afterwards, we set up a local server with the flask Python library and an easy to use, clean, IOS app for a user-friendly experience.

## Challenges we ran into

Creating a dataset large enough to handle accurate destination suggestions.
Optimizing performance in a sub-optimal internet connectivity environment.

## Accomplishments that we're proud of

Significant usage of the JetBlue low fares dataset
Building a functional IOS app with a high degree of practicality, and user friendliness
Accurate and interesting destination results
Low fares!

## What we learned

Flask, Ngrok, Google Vision API, JSON

## What's next for TrueBlue Adventures

We hope to expand TrueBlue Adventures to cover JetBlue's entire network. Fully functioning date picker and airport selection would come with a future booking system.
## Inspiration

We were inspired by JetBlue's challenge to utilize their data in a new way and we realized that, while there are plenty of websites and phone applications that allow you to find the best flight deal, there is none that provide a way to easily plan the trip and items you will need with your friends and family.

## What it does

GrouPlane allows users to create "Rooms" tied to their user account with each room representing an unique event, such as a flight from Toronto to Boston for a week. Within the room, users can select flight times, see the best flight deal, and plan out what they'll need to bring with them. Users can also share the room's unique ID with their friends who can then utilize this ID to join the created room, being able to see the flight plan and modify the needed items.

## How we built it

GrouPlane was built utilizing Android Studio with Firebase, the Google Cloud Platform Authentication API, and JetBlue flight information. Within Android Studio, Java code and XML was utilized.

## Challenges we ran into

The challenges we ran into was learning how to use Android Studio/GCP/Firebase, and having to overcome the slow Internet speed present at the event. In terms of Android Studio/GCP/Firebase, we were all either entirely new or very new to the environment and so had to learn how to access and utilize all the features available. The slow Internet speed was a challenge due to not only making it difficult to learn for the former tools, but, due to the online nature of the database, having long periods of time where we could not test our code due to having no way to connect to the database.

## Accomplishments that we're proud of

We are proud of being able to finish the application despite the challenges. Not only were we able to overcome these challenges but we were able to build an application there functions to the full extent we intended while having an easy to use interface.

## What we learned

We learned a lot about how to program Android applications and how to utilize the Google Cloud Platform, specifically Firebase and Google Authentication.

## What's next for GrouPlane

GrouPlane has many possible avenues for expansion, in particular we would like to integrate GrouPlane with Airbnb, Hotel chains, and Amazon Alexa. In terms of Airbnb and hotel chains, we would utilize their APIs in order to pull information about hotel deals for the flight locations picked for users can plan out their entire trip within GrouPlane. With this integration, we would also expand GrouPlane to be able to inform everyone within the "event room" about how much the event will cost each person. We would also integrate Amazon Alexa with GrouPlane in order to provide users the ability to plane out their vacation entirely through the speech interface provided by Alexa rather than having to type on their phone.