Inspiration

The greatest adventures shouldn't be limited by the availability of your immediate friend group. We’ve all been there: you want to visit the Fairy Meadows or camp at Attabad Lake, but your friends are busy, broke, or simply not interested in the "wild." This "lone wolf" problem often leads to incredible trips being canceled or taken in isolation.

I was inspired to build Howl to bridge this gap. I wanted to create a space where travelers don't just find destinations, but find their pack—a community of like-minded explorers who share their vibe, pace, and passion for the unknown.

What it does

Howl is a social adventure planning platform that transforms individual travelers into a unified team.

  • Personalized Matching: Uses a weighted scoring algorithm to suggest trips that align with your travel personality and interests.
  • Collaborative Planning: Real-time coordination with shared itineraries, interactive calendars, and structured trip requirements (age, gender, vibe). ### Comprehensive Trip Hub Each trip is a dedicated workspace for the pack. The Trip Hub includes:
  • Dynamic Itineraries: A multi-day breakdown of planned activities, destinations, and logistics.
  • Custom Restrictions: Trip leaders can set specific parameters for their pack, including age ranges, gender preferences, and max group size.

Interactive Adventure Calendar

The Howl Calendar provides a unified timeline view of all upcoming adventures. It allows users to visualize their trip durations, identify scheduling overlaps, and manage their travel season at a glance. It’s the ultimate tool for the organized explorer.

Real-Time Pack Communication

At the heart of every trip is the Pack Chat. Powered by WebSockets, this real-time messaging system allows members to coordinate logistics, share excitement, and build rapport before the trip even begins. The chat is deeply integrated, allowing users to jump from a conversation directly into the itinerary details.

How I built it

  • Frontend: Built with React ** and **Vite, styled using Tailwind CSS. We utilized Framer Motion for animations.
  • Backend: A FastAPI server. We used SQLAlchemy for ORM and PostgreSQL for relational data integrity.
  • Real-time: WebSockets enable the seamless group chat experience, while JWT handles secure authentication.
  • Matching Core: The heart of Howl is our weighted suggestion engine. I calculated the "Alignment Score" $S$ for any trip candidate using: [ \begin{aligned} S &= 10 \cdot \lvert T_u \cap T_t \rvert
    • 15 \cdot \mathbb{I}_{\text{vibe}}
    • 30 \cdot \mathbb{I}_{\text{loc}}
    • 2 \cdot n_m, \[6pt] \text{where } \lvert T_u \cap T_t \rvert &\text{ is the overlap between user and trip tags}, \ \mathbb{I}{\text{vibe}} &\text{ indicates a personality/vibe match}, \ \mathbb{I}{\text{loc}} &\text{ indicates location proximity}, \ n_m &\text{ is the current member count (popularity factor).} \end{aligned} ]

Challenges I ran into

  • 422 Error : Setting up the suggested trips API was a nightmare at first. I kept hitting 422 Unprocessable Content errors because the data didn’t line up perfectly. It taught me to pay closer attention to the details and double-check my work.
  • WebSocket Learning Curve: Since this was my first time using WebSockets, I spent a lot of time figuring out how to keep the connection alive while navigating between pages. There were moments where the chat would just stop working because I didn't handle the "unmount" properly as a first-timer.

Accomplishments that we're proud of

  • End-to-End Chat: Getting a real-time chat running from scratch—where you can actually talk to other travelers in your pack—was a huge win for us.
  • The "Vibe" System: I managed to build a matching algorithm that actually works. It doesn't just show you random trips; it actually ranks them based on your travel personality.
  • A Working MVP: From login to creating a trip and having someone else "request to join," the entire core loop of the app is fully functional and ready to use.

What I learned

  • Mastering Real-Time Connectivity: This was my first time working with WebSockets. Learning to manage persistent connections, handle broadcast events, and sync chat states in real-time was a steep but rewarding learning curve.
  • Switching to PostgreSQL: While I had experience with MySQL, this project marked our first deep dive into PostgreSQL. I learned how to keep data organized and write efficient queries for the matching system.

What's next for Howl

  • AI Itinerary Generation: Integrating LLMs to suggest specific spots based on the group's collective interests.
  • Verified Adventurer Program: Implementing a trust-based rating system to ensure every pack member is reliable.

Built With

Share this project:

Updates