Inspiration

When I would go on vacation with my family, we would visit amusement parks and other tourist attractions of the like. While vacations should be fun, I really regret not being able to visit more of the educational places on my trip, and I fear that other kids feel the same. I built Eduvacation to promote the idea that vacation can be fun, exciting and educational all at the same time!

What it does

Eduvacation provides the user with educational-oriented tourist attractions (such as museums, science centers and historical places) located near around a thousand destination spots across the globe. Once a user has visited one of these points of interest, they must answer a related question as a way of inquiring them on how much they learned and ensuring they made the most out of their visit. The app also optionally tracks the user's location (the user should physically be next to a site to answer a quiz question) as to prevent them from potentially cheating! Each trip is added to the user's log for personal keeping and remembrance (and bragging rights!)

How I built it

Eduvacation is an iOS app built using Xcode and the Swift programming language. The app retrieves information about cities and quiz questions from a Python backend created using Flask; this program scrapes Wikipedia articles to formulate such questions. The list of attractions for each vacation spot is sent from the Google Cloud Places API, which is displayed on the map within the app.

Challenges I ran into

The major challenge I ran into was setting up frontend-backend communication using REST, especially when receiving JSON responses and decoding them into usable information. I also ran into a bit of trouble storing local data within the iOS app using the DocumentsDirectory archive, but lots of effort and time into testing and debugging allowed me to solve these issue.

Accomplishments that I'm proud of

I'm really proud that I was able to solve the challenges I stated above; it is the first hackathon project that I have had to implement these features in, and therefore I'm really satisfied with the end result. Also, this project was really cumbersome and required a lot of effort and dedication, placing itself in a group of hackathon projects that I normally would not have been able to finish on time. While I am definitely grateful for an extra day to work on Eduvacation, I had doubts about whether I would have been able to complete it. I truly believe that hackathons have improved my ability to work and manage time efficiently.

What I learned

I learned a lot about new topics I would never have knew about if it weren't for Eduvacation. For example, I am grateful to have learned about the usefulness and versatility of REST and will definitely use it for future projects. In the past, I never actually found a solid way to connect a Swift frontend and Python backend, and that always left my projects incomplete.

What's next for Eduvacation

First and foremost, Eduvacation's current features can be improved upon. For example, the web scraping is a bit error-prone and outputs questions that are unclear from time to time. Hopefully, I can find new sources to webscrape (or more generally receive data) from to alleviate this issue. I also want to add more features that make the app more usable and enjoyable! This is an app focused towards kids after all, and I want to make sure they have as much as fun as possible when using it. For example, I could add a better incentivization system to encourage kids to visit education attractions more and even share their experiences with others.

Share this project:

Updates