Inspiration
I wonder "What would travelling feel like if I didn't plan everything?" Usually, when I travel, I already know where I'm going, what places I'm visiting, where I'm eating, and what I'm doing next. But what if I just let the journey decide for me? Would it be chaotic, or would it be filled with unexpected discoveries and surprises? That thought inspired me to create Wondertrail—an app where I choose an area, set a few preferences, and simply roll to see where the adventure takes me. Instead of spending time planning every stop, I wanted travelling to feel a little more spontaneous, surprising, and exciting.
What it does
Wondertrail transforms map locations into spontaneous adventures. Users simply select an area to explore, set their preferences, and click "roll." The app instantly curates a complete, sequenced trail using available destinations in that region. Instead of planning stop-by-stop, travelers get a seamless journey out of the box. Each generated stop includes practical details like photos, descriptions, categories, time estimates, costs, and tips from other travelers.
How I built it
I built Wondertrail's frontend with Flutter and its backend with Appwrite. I integrated OpenStreetMap and flutter_map to handle geographical visualizations, while Appwrite manages destination data and photo storage. Rather than relying on static, pre-packaged routes, the app uses a dynamic, map-based point-of-interest system. Destinations are stored individually, enabling my algorithm to dynamically stitch nearby locations together into a logical trail the moment a user rolls. This generated route is then rendered as a connected, interactive journey on the map.
Challenges I ran into
My primary technical challenge was developing an algorithm that generates full trails that are both spontaneous and highly practical. Because the system dynamically selects multiple stops—rather than picking a single random point—it has to account for complex variables like distance, geographic clustering, and the logical flow between locations. Additionally, balancing the user experience was tricky: I needed the "roll" mechanic to feel fun and unpredictable, but the resulting itinerary still had to be realistic and easy to navigate.
Accomplishments that I'm proud of
I successfully engineered a completely new paradigm for travel discovery. Instead of forcing users to sift through hundreds of reviews or settle for generic, pre-made guides, Wondertrail builds unique adventures on the fly using existing map data. My core philosophy—"roll once, get an entire adventure"—simplifies trip planning without sacrificing the thrill of discovering the unknown.
What I learned
I learned that pure randomness requires underlying structure to deliver a strong user experience. Picking destinations at random often yields disjointed, frustrating travel routes. Building Wondertrail pushed me to deeply analyze spatial relationships—figuring out how places connect geographically so my trails feel spontaneous but remain highly logical. Furthermore, I gained significant hands-on experience with the unique architectural demands of map-based applications, spanning location data storage, dynamic route generation, and journey visualization.
What's next for Wondertrail
Moving forward, I plan to upgrade my trail-generation algorithm to better factor in complex variables like real-time travel distance, operating hours, destination categories, and deeper user preferences. I am also focused on expanding my destination database, refining the map interface, and allowing users to lightly customize their itineraries without losing the magic of the spontaneous roll. Due to budget limitations during development, I currently use OpenStreetMap. If resources allow in the future, I plan to integrate Google Maps to provide more complete destination information and access to a wider range of reviews. Ultimately, my vision is to establish Wondertrail as the ultimate travel companion: just pick a region, roll the dice, and let the adventure unfold.
Built With
- appwrite
- flutter
- openstreetmap
- revenuecat
Log in or sign up for Devpost to join the conversation.