Inspiration
HarborHop was inspired by a problem almost everyone has faced: planning an outing with friends sounds fun, but the actual decision-making is usually messy. Suggestions get scattered across group chats, some people care about budget, others care about vibe, and no one is really thinking about route logic or timing. Even when there are plenty of good options, turning them into one clear plan is surprisingly hard.
We wanted to build something that makes that process collaborative, visual, and much smoother. That led to HarborHop — a shared outing planner where friends can add places, vote together, and generate a route that actually makes sense. The water theme came naturally from that idea: a harbor is a place where movement is organized, and that matched our goal of helping groups move from chaos to flow.
What it does
HarborHop is a real-time collaborative outing planner for groups.
It allows friends to:
- create a shared planning room called a Harbor
- join through a simple code or link
- add places like cafés, restaurants, dessert spots, scenic stops, or activities
- view those places on a shared map
- vote on favorites and mark must-visit spots
- apply group filters like budget, vibe, distance, and time
- generate a final outing route based on the group’s preferences
Instead of leaving ideas scattered across chats, HarborHop turns them into one shared, visual, and logical plan.
How we built it
We built HarborHop around a simple collaborative flow:
- A user creates a Harbor
- Friends join the Harbor
- Everyone adds suggested places
- The app displays those places on a shared map and in a collaborative feed
- The group votes and applies filters
- HarborHop generates a final itinerary from the best matching options
From a design perspective, we focused heavily on making the experience feel fluid and themed. We used a dark ocean-inspired palette, aqua and teal highlights, glass-like panels, rounded cards, and wave-based layouts so the interface felt more like a flowing social experience than a rigid dashboard.
From a product logic perspective, we designed the planning system around a simple tradeoff: the “best” route is not just the most popular route, but the one that fits the group’s constraints most realistically. A simplified way to think about that logic is:
$$ \text{Route Score} = \alpha(\text{votes}) + \beta(\text{preference match}) + \gamma(\text{category balance}) - \delta(\text{travel time}) - \epsilon(\text{budget mismatch}) $$
This helped us think beyond just ranking places by popularity and instead toward building a route that feels believable for a real outing.
Challenges we ran into
One of the biggest challenges was scope. HarborHop could easily grow into a much larger platform with AI recommendations, weather-aware planning, built-in chat, voice calls, and advanced optimization. The hard part was deciding what not to build and staying focused on the strongest core loop: add places, vote together, and generate a route.
Another challenge was making the planning realistic, not just interactive. It is easy to let users suggest many places, but real outings are constrained by time. For example, if ten places are suggested but the group only has three hours, the app should not try to include everything. It has to choose the most logical subset.
We also realized that each stop can take a different amount of time. A coffee stop may take 30 minutes, while dinner could take much longer. That means route generation is not only about votes; it is also about pacing. In a more complete version, the total plan should satisfy a constraint like:
$$ \sum_{i=1}^{n} \left(\text{travel time}_i + \text{stay duration}_i\right) \leq \text{total outing time} $$
Another interesting challenge came from time-sensitive preferences. For example, if a group wants to see the sunset, the planner should place that scenic stop at the right time in the route, not just somewhere in the list. That pushed us to think beyond simple ranking and more toward context-aware planning.
Finally, we wanted the water theme to feel meaningful rather than decorative. Instead of just making the UI blue, we tried to carry the theme through the naming, interaction design, visual flow, and overall feel of the product.
Accomplishments that we're proud of
We are proud that HarborHop feels like more than a simple feature demo. It has a clear real-world use case, a cohesive visual identity, and an end-to-end collaborative planning flow.
We are especially proud of how it combines several useful ideas into one experience:
- shared group decision-making
- map-based exploration
- live voting
- preference-based filtering
- final itinerary generation
We are also proud of the water-inspired design language. The theme shows up not only in the colors, but also in the product language, layout, and motion. The result is a planning experience that feels more memorable and polished than a generic outing tool.
Most of all, we are proud that HarborHop starts with scattered group ideas and ends with one smooth route. That transformation is the heart of the project.
What we learned
We learned that strong products come from solving one clear problem well. It is tempting to keep adding features, but the product becomes much stronger when the core experience is focused and complete.
We also learned that design has a huge impact on usability. The same feature set feels much more engaging when it is presented with a consistent visual identity and intuitive flow.
From a technical and product standpoint, we learned the importance of structuring shared data early. Places, votes, filters, time constraints, and itinerary outputs all need to connect cleanly for a collaborative app to feel smooth.
Most importantly, we learned that good collaborative tools do not just collect suggestions — they help groups move from uncertainty to a decision.
What's next for HarborHop
One of the biggest next steps for HarborHop is making the itinerary engine more context-aware.
We want future versions to better account for realistic stay durations at each stop, not just votes and filters. If a group only has a short outing window, HarborHop should intelligently choose the best three or four places instead of trying to include everything.
We also want to improve time-sensitive planning. For example, if the group wants to catch a sunset, arrive before a place gets too crowded, or end the outing with a scenic stop, the route should reflect that timing. Ideally, a future planner would satisfy relationships like:
$$ t_{\text{sunset stop}} \approx t_{\text{sunset}} $$
Another direction is making collaboration richer with a built-in call or voice system, so groups can discuss options directly inside the app while planning instead of switching between multiple platforms.
We also see strong potential for smarter suggestions. Based on the group’s votes, preferences, and top-liked places so far, HarborHop could recommend more relevant spots during the planning process itself. That would make the app feel more adaptive, more interactive, and more useful over time.
HarborHop turns scattered group ideas into one smooth outing route.
Built With
- api
- beanie
- docker
- fastapi
- google-maps
- mongodb
- node.js
- openai
- pydantic-ai
- python
- react
- tailwind
- typescript
- vite
- websockets
- zustand
Log in or sign up for Devpost to join the conversation.