We had the experience of having many of our vacations ruined by inadequate planning and a lack of readily available activities. Sadly, actually planning out a vacation is not as fun as the actual trip. Therefore, we decided to make CityConnect in order to make the process of vacation planning much easier and more enjoyable.

What it does

Our application allows the user to first enter a city that they anticipate vacationing in. They are then presented with a schedule that is dynamically updated as they add activities from different categories. After they choose a city and a category, the top five results for relevant places are presented along with any available information such as ratings, price level information, address, hours, and the time that people typically spend at the place.

How we built it

We first worked on using the Google API and Python Requests to extract information from Google queries of a city and a generic category. After we had parsed information that could be presentable, we created a database for management of any events that are added using sqlite in Python. We then proceeded to work on the actual web app and the front-end. We used the Flask framework in order to manage actions and requests made by the user and navigate to different HTML pages. We used HTML, CSS, and Javascript for the actual webpages the user visited and the actions they could perform.

Challenges we ran into

Although we had a lot of experience with working in Python, we initially encountered issues with finding the right API to use and getting it to behave nicely. However, finding usable data was only the beginning of the battle. The rendering of the webpages using Flask was initially difficult to wrap our heads around, but once we got the hang of it we proceeded nicely in this area. For us, the front-end was particularly challenging. We didn't have much experience in front-end development so making the application actually look nice and simultaneously have all of the functionality that we wanted slowly became an impossible task. We worked slowly to build our webpages from features such as background images to the presentable table, but in the end we were able to successfully meet all that we set out to do.

Accomplishments that we're proud of

We are proud of the entire web application and the amount of work we put into it. The finished product is obviously extremely precious, but each individual function and line of code that we worked on also holds significance.

What we learned

Basically everything we did in this project (beyond the fact that we used Python) was a learning experience for us. We learned a lot about basically all areas of development. Firstly, we learned about scraping and making requests through an API and then proceeding to extract/parse the data to make it personally useful. We also discovered how to utilize the Flask web framework, and the process of managing templates/webpages to render based on user input. As mentioned previously, developing on the front-end was completely novel to us and we learned a great deal about HTML, CSS, Javascript and how they work together.

What's next for CityConnect

The next steps for CityConnect are to make the app run independently. We also would like to implement user accounts so that information can be more secure and stored separately. Improvements in the GUI are also an important feature we wish to improve. Most importantly, we want to actually test the application on some friends and family to see what features can be improved/modified to make it more user-friendly and useful in the real world.

Share this project: