Inspiration

Ever planned a trip months in advance just to realise when you get to the location that it’s started to rain, meaning you have to plan everything again? Well, we certainly have as well. Which is why we created an app that would help you make a backup plan. Better yet, you don’t even need to input the weather, our app will do it for you. Whether it’s a sudden downpour during a sightseeing tour, or scorching heat making outdoor activities unbearable, our app will create a custom itinerary perfect for your last-minute plans.

We wish that no one has to spend the day at home ever again due to some unexpected weather conditions!

What it does

JourneyGenie is a tool designed to take the stress and uncertainty out of your next holiday.

It helps travelers plan their next holiday by leveraging the OpenAI API to suggest the best locations, attractions, restaurants, and accommodations.

Most importantly, we leverage the Visual Crosing weather API to suggest the most appropriate activities, ensuring that users receive an experience that is tailored to specific weather conditions on the chosen day. We take the hassle out of travel planning, ensuring you will always have something fun to do regardless of the weather.

How we built it

Our app is built with a SwiftUI frontend, and a Flask backend. We used the Visual Crosing weather API to check weather conditions for a given date, and the OpenAI API for itinerary suggestions based on a given location and weather conditions.

Challenges we ran into

Integrating the OpenAI API into our Python Flask backend posed significant challenges, particularly with getting a valid API key. Each of us tried creating API keys in our accounts, and used it in the backend to call the endpoint. However, we were getting responses with error code 400, without a clear reason. It took us some time to figure out that the credits included in our accounts were expired.

Additionally, we encountered issues with rate limits imposed by the OpenAI API, necessitating strategic handling of requests to avoid exceeding the allotted quota. Despite these hurdles, our team successfully implemented robust error handling mechanisms and efficient request management strategies to ensure seamless integration with the OpenAI API while maintaining the security and integrity of our application.

Accomplishments that we're proud of

Participating in our first UniHack hackathon, we're incredibly proud of our team's accomplishments in successfully completing the project within the allocated time frame. Through this experience, we not only showcased our ability to innovate and execute ideas but also demonstrated resilience and adaptability in the face of challenges. Integrating with external APIs such as the VisualCrossing weather API and the OpenAI API expanded our understanding of API integration.

We also learnt more about Swift and SwiftUI for the frontend, which allowed us to explore new pathways in mobile app development - a feature we had never attempted before. Most importantly, our journey through this hackathon strengthened our team collaboration skills, fostering a cohesive and supportive environment where each member contributed their expertise to achieve a shared goal.

What we learned

During the development of this app, our team gained valuable insights and skills. We learned how to effectively utilise APIs, including OpenAI for generating descriptive content and Visual Crossing for weather data retrieval.

Additionally, we successfully set up a SwiftUI frontend coupled with a Python Flask backend, showcasing our ability to work with diverse tech stacks. For some of us, it was our first time involved in the development of a mobile app. We explored new frameworks, design patterns, and best practices specific to mobile platforms. As we delved into SwiftUI, we discovered its simplicity and power in creating dynamic and responsive user interfaces, allowing us to craft a visually appealing and intuitive application.

Overall, this project served as a valuable learning experience, enabling us to enhance our technical expertise, collaborate effectively as a team under time pressure, and ultimately deliver a polished product that we are proud of.

What's next for JourneyGenie

We think some sort of data persistence should definitely be the next goal, as users should be able to request new, unique itineraries for their next trips. We envision that this would require some sort of data store, probably a NoSQL database, that can store account information and some API usage history. The OpenAI API contains a threads object which would be useful here.

Additionally, a web app would be a great addition to the current frontend. This will help us target many more users, especially those without iPhones. We also plan to add more functionalities to the app, such as multi-day itineraries, and some social features that can match users going to a similar destination.

Deployment was also a huge wish of ours, but since we created an iOS app, we were at the mercy of Apple Developer’s fees. Hopefully, we can deploy this app in the future.

Built With

Share this project:

Updates