As we brainstormed ideas at the start of the hackathon, we discovered that Amadeus had an API that allowed people to search for flights to all possible destinations under a certain price. Most travel apps generate plans and itineraries for longer vacations in big cities, but we wanted to add more diversity to the app and help plan for short and nearby trips. And thus, On A Whim was born.

What it does

On A Whim allows a user to figure out where they want to go for a short trip. When the traveler enters their starting destination, range of departure dates and maximum budget, the travel app displays a list of events happening in the cheapest destinations. The app also displays a map of these locations, with pins indicating the locations of events.

How we built it

On A Whim was built off of the create-react-app template, with React.js being used in the front end and Express.js supporting the backend. Alex led front-end dev, Vlad primarily worked on the back-end and Rachana worked primarily on the front-end components. Amadeus' travel API was used to generate destinations and prices to those places. The Eventful API was used to generate a lists of events happening in the places. Lastly, the Google Maps API was used to display the map of events.

Challenges we ran into

There were several challenges that we had to work around with On A Whim: 1) JavaScript woes. Between the nuances in creating/debugging React components and asynchronous functions in the backend, we spent a good chunk of time debugging short snippets of JavaScript.

2) There was no single API that give us all of the location info that we needed to feed into the Eventful and Google Maps APIs. We had to aggregate multiple sources of location data before we could even begin dealing with event and mapping functionality.

3) We had to configure the app from scratch in order to make it work with our app design.

4) Connecting the front and back end together. Each team member has experience with web-dev, but only in the front OR back end. Getting these two parts to talk together was difficult.

5) Resolving merge conflicts. We often worked on the same files without realizing it and sometimes overwrote each others work.

Accomplishments that we're proud of

1) Vlad got the apis to work together. 2) I (Rachana) am happy that I was able to create fully functional react components. 3) Alex was proud of getting all of the React component/Redux infrastructure set up correctly.

What we learned

We learned a lot about programming web apps with React.js and how important it is to have an understanding of of full-stack web development. People have a right to like whatever end they please, but if everyone on a team has some background in both ends, it helps with seamless project building. Also, adding onto the concept of seamless building, we learned that we should take advantage of git branches when developing features.

What's next for On A Whim

We are interested in cleaning up the app and allowing users to include more options in their searches. We are also interested in creating a more targeted events list (such as displaying events to only the top 10 popular destinations near the user). This app also provides a good framework for developing React.js skills.

Built With

Share this project: