Inspiration
Travel planning can be overwhelming and time-consuming, leaving you feeling lost and uncertain about your choices. The lack of personalized recommendations and up-to-date information often leads to disappointing trips that don't meet your expectations. As the tagline suggests, "Underrated places await", travelers often remain unaware of the best-hidden places near them that could eventually add to their good experiences list. Additionally, it can be challenging to connect with like-minded travelers and share your experiences in real time.
What it does
Traverse understands the pain points of travel planning and offers a comprehensive solution that addresses them head-on. With "state-of-the-art" recommendation algorithms and key filters, we provide you with tailored trip recommendations based on your preferences, whether you're seeking religious sites, natural wonders, or any other specific interests.
Connect, Share, and Explore with Traverse!😊
Say goodbye to feeling alone on your journey! Traverse's real-time sharing platform lets you post about your trips and engage with like-minded travelers. Join a vibrant community of explorers eager to share experiences and tips. Start connecting and embark on unforgettable adventures together with Traverse!
Our user-friendly dashboard makes managing your account details effortless, keeping your preferences and trip history organized in one place.
Traverse lets users get inspired and discover remarkable destinations you might have never considered before!

Features🔍
Personalized Trip Recommendations: Tailored suggestions based on your preferences.
Community-Driven Platform: Join a vibrant travel community and access crowdsourced information.
AI-Powered Itinerary Planning: Optimize your itinerary with AI analysis.
Efficient Favorite Management: Easily save and organize your favorite places.
User-Friendly Account Dashboard: Seamlessly manage your account and trips.
Real-Time Trip Sharing: Collaborate with fellow travelers in real time. The interface lets you message the author for the trip shared. He/she will receive an email about you wanting to join them.

Hidden Places Contributions: Users can contribute their knowledge of lesser-known, hidden gems that are rarely spoken of. They can share information about local eateries, hidden trails, and other unique experiences, enriching the platform's content and helping fellow travelers discover hidden treasures.
Reviews and Ratings: Users can share their reviews and ratings for attractions they have visited. This allows other users to make informed decisions based on real experiences and feedback from the community.
Join the ever-growing community of travelers who trust Traverse to enhance their travel experiences. Start planning your next adventure with confidence, knowing that you have a reliable and personalized travel companion by your side.
Happy travels with Traverse!
How we built it

Tech Stack👨💻
💻 Client:
ReactJS: a JavaScript library for building user interfaces
Arco Design: components library for streamlined UI development```
MapBox GL: a mapping platform for dynamic & interactive maps```
⚡ Server:
- Appwrite: an open-sourced serverless backend service
📡Other:
🤖 OpenAI: real-time response generator on different AI models
✉️ Nodemailer: NodeJS module for sending emails via API and SMTP server
📦 Additional Libraries: Bootstrap, DayJS, ChartJS
Below is the list of Appwrite's services used🔧
Authentication🔐
- Register new users
- Create a secured session with email and password
Database🗄️
- Store various data of the application like places, reviews, favorites, shared trips, etc.
Storage💾
The Appwrites storage bucket is utilized to store the uploaded images of places on Traverse. Furthermore, it served as a storage solution for various other types of files.
Cloud Functions⚙️
Currently, the Traverse project consists of four cloud functions. For more detailed information about each function, please refer to the respective readme available at this link: https://github.com/Traverse-A-Travel-Planner/traverse-client#readme)
postInsights: The postInsights function calculates insights for a post, such as total reviews and average ratings. It updates this information in the database when triggered by a new review.
userDataExtractor: The getUserDetails function retrieves basic user information, such as name and email, using the user's ID. Its purpose is to populate queries related to the user table using the unique user ID.
mailer: The Mailer function sends emails, supporting multiple actions with corresponding templates. Currently, it includes "shareTripMail" for trip proposals, but can be customized for other email types.
openAI: Using the OpenAI API key, Traverse generates responses based on user prompts. Specifically, it is employed to create itineraries for users to plan their upcoming trips.
Code Architecture🕸️

Challenges we ran into
Below are the major setback challenges that we faced in the development phase:
It was challenging to implement query caching for Appwrite APIs.
The caching of the Mapbox map component posed difficulties as the map would repeatedly reload when navigating between pages. This caused the landing page to become slow and unresponsive.
The Appwrite's API response order was unpredictable in contrast to query parameters. Although we managed to fix it, turns out that the time complexity for the code was O(n^2).
The lack of comprehensive data sets for places presented challenges in developing an efficient recommendation algorithm. Although we had previously implemented a machine learning model for this purpose, changes in the fields for places created complications that affected its effectiveness.
Due to the limited funds, we had to allocate fewer tokens to each place's itinerary generator. Furthermore, financial constraints prevented us from using advanced OpenAI models like ChatGPT 3 and 4. Instead, we are relying on an older model, text-davinci-002, which may affect the overall performance.
With limited familiarity with Redux, the management of component state may not be as efficient as desired. But with custom event listeners, props and logic, we were able to handle the states in an effective and code-readable manner.
Accomplishments that we're proud of
Checkout Traverse's Performance Scores by Google Insights: https://pagespeed.web.dev/analysis/https-traverse-rho-vercel-app/mrva934kji?form_factor=desktop

What we learned
This hackathon was an exciting adventure for us. We were able to quickly create the website with the Appwrite's documentation and applied what we learned in our code. We also discovered serverless architecture, which added to our learning experience.
Participating in NorCalHacks hackathon was unforgettable. We gained valuable skills and the ability to overcome challenges.
I personally encourage my fellow developers to explore the power of Appwrite (appwrite.io).
What's next for Traverse
We plan to implement more features to it and have it beta tested. Thereafter, we would likely be launching it for public given we receive good feedbacks from our current users.
Log in or sign up for Devpost to join the conversation.