Inspiration
I've witnessed many people struggling to make time to plan for holidays. I, as a busy student myself am a victim of this. Not only do I lack time to plan, but also to figure out the holiday location in the first place. That's when I and my teammate Justas thought of this idea to provide trip inspiration in the form of scenic imagery, and ease the process of planning the trip for them.
What it does
Voyager displays AI-generated scenic imagery, and people can save the images that they like for future considerations when planning a holiday. It also has an AI-powered itinerary planning function where users can input preferences for their trip.
How we built it
For the Frontend, we used React and Vite to create a responsive and appealing interface.
The Backend is powered by Python (Flask), which serves as the orchestrator between our database and the AI models. We used Supabase (PostgreSQL) for secure data persistence, implementing Row Level Security (RLS) to ensure users' saved destinations remain private.
We integrated Gemini 3.0 Flash Lite to generate detailed, day-by-day itineraries based on complex user prompts, and Imagen to generate the hyper-realistic scenic imagery that drives the inspiration engine.
Finally, we took a DevOps approach. We containerised the application using Docker and deployed it to Azure Container Apps. We set up a fully automated CI/CD pipeline via GitHub Actions that builds and pushes images to the Azure Container Registry (ACR) whenever we push code, ensuring our live site at voyager-travel.org is always up to date.
Challenges we ran into
Firstly, we ran out of API usage for the Gemini and Imagen models quickly when fiddling with and testing them, and switching models was frustrating as some models wouldn't work sometimes even if our usage hasn't hit the limit.
Secondly, getting Gemini to output a consistent, parseable JSON format for the itinerary was tricky. We had to engineer strict prompts and validation layers to stop the AI from hallucinating invalid data structures.
Lastly, the process of cloud deployment and creating the CI/CD pipeline were new to us, so embarking on this challenge to do them for the first time was tough.
Accomplishments that we're proud of
Firstly, we managed to set up a professional infrastructure using Azure with a custom domain (.org), managed SSL certificates via Cloudflare, and an automated CI/CD pipeline. These were all new concepts to us, so we were extremely happy that we managed to make it work.
Successfully utilising two different AI models (Gemini for logic, Imagen for visuals) to improve and maximise user experience was challenging but rewarding.
Seeing our app actually benefit some of our friends and family, and improving it while gathering their feedback gave us a sense of accomplishment and satisfaction when we felt like we were actually building a product that could impact real users.
What we learned
We learned about prompt engineering - how to structure prompts to get reliable and suitable output for our frontend to render.
We learned that writing the application code is only half the battle. We had to configure Dockerfiles, deploy it to the Azure cloud, automate development and production through a pipeline, and configure DNS for the custom domain name.
What's next for Voyager
We want to allow users to invite friends to their itinerary so groups can vote on activities and plan together in real-time.
Also, we currently only provide a day-to-day plan. Our next step is integrating travel-related APIs (like Expedia or Skyscanner) to let users book the suggested hotels and flights directly.
This will allow our application to gain real users and make an impact in the world.
Log in or sign up for Devpost to join the conversation.