Inspiration

Planning a trip sounds exciting… until you actually have to do it. Between checking weather, finding attractions, organizing days, and figuring out logistics, it quickly becomes overwhelming. We wanted to build something that takes that friction away and makes planning feel effortless—so people can focus on the experience, not the spreadsheet.

What it does

Roam is a smart travel planning app that builds personalized itineraries based on your destination, preferences, and real-time conditions.

Users select a location on an interactive globe, customize their travel style, and swipe through suggested attractions. Roam then generates an optimized itinerary that accounts for weather, distance, and user preferences—making travel planning faster, smarter, and more intuitive.

How we built it

We built Roam using a React frontend with Vite for speed and flexibility. The interactive globe is powered by MapLibre, allowing users to visually select destinations.

We integrated external APIs including:

OpenStreetMap (location search) Reverse geocoding APIs (to identify selected locations) Wikipedia/Wikimedia (for attraction descriptions and images)

On the backend, we created an API to generate and organize attractions into itineraries based on user inputs like travel radius, dates, and preferred pace.

Challenges we ran into

One of the biggest challenges was working with external APIs and handling inconsistent data—especially for images and location information.

Another challenge was designing a UI that felt intuitive but still gave users control. We spent a lot of time refining the interaction flow (map → input → swipe → results) so it felt seamless instead of overwhelming.

We also had to balance real-time responsiveness with loading external data, which required thoughtful handling of loading states and fallbacks.

Accomplishments that we're proud of

We’re really proud of how polished and interactive Roam feels. The globe-based selection makes choosing a destination feel immersive, and the swipe interface makes filtering attractions fast and engaging.

We also successfully integrated multiple data sources into a cohesive experience, turning raw information into something meaningful and usable. Overall, we created something that feels like a real product, not just a prototype.

What we learned

We learned how to work with multiple APIs and handle real-world data inconsistencies.

We also learned the importance of UX design—small details like animations, transitions, and loading states made a huge difference in how the app feels.

Finally, we improved our ability to break down a big idea into manageable features and iterate quickly under time constraints.

What's next for Roam

We’d love to make Roam even more personalized by incorporating user history, ratings, and recommendations from other travelers. We would like to allow users to move around/edit their itinerary.

We also want to enhance itinerary optimization with more advanced logic, including crowd data, travel time prediction, and dynamic adjustments.

Long term, we see Roam becoming a full travel companion—helping users not just plan trips, but experience them better.

Built With

Share this project:

Updates