Trip Planner
Plan your Dream Trip with Trip Planner
Problem Space
The travel industry has seen tremendous growth in new products over the past decade but it is not until recently that attention has been directed towards helping travellers explore activities in their destination of choice. Because of its annual projected growth rate of 15.2% from 2022-2030, most leading organisations in the space have incorporated a feature to help travellers but people still struggle to find things to do based on their interests and lifestyle.
Problem Background
The lack of personalised experience coupled with the time it takes to navigate travel content online makes it challenging for a lot of travellers when deciding on where and where to travel.
For groups of two or more travellers, varied interests and differences in lifestyle makes it extremely difficult to plan travel. To alleviate this problem, most group travellers often turn to companies curating travel to specific destinations which are very expensive, offer little to no flexibility and uncertain group dynamics during their travels. However, we will not be able to address this during our session at Colab because of our timelines.
User Pain Points & Research Insights
In digging deeper to validate our problem statement we gathered primary data from users and also conducted secondary research online and found the following:
- Most users express that they are overwhelmed by the amount of information out there. Path to Purchase research uncovered a similar challenge finding that most users view 185 pages of travel content before booking their travel.
- Users also expressed that they do not have the spare time to dedicate towards Planning. This is further solidified by Expedia’s Group research that most people spend over 5hrs consuming online travel content to seek inspiration and plan their trip.
- Additionally, none of the over 50 online travel planforms serve as a repository for travel itinerary so most people save their itineraries on their phones in pictures, google docs, notes etc. as well as papers.
- Our research also found that most people prefer to travel with their friends/significant other/family but it is very challenging to create a travel plan that accommodates other people considering their lifestyle and interests.
Problem Statement
How might we personalise and simplify finding activities and creating itinerary for travellers so that the experience is less stressful, faster and easier.
Solution Explanation
Based on our target users’ pain points, we knew we wanted to create a way for people to find things to do while travelling based on their interests and preferences. Users will be able to go to one spot to plan their trip, saving time and effort. In addition to users finding activities to do on their trips they will also be able to create itineraries for the trip.
Lofi & Hifi Mockups
Iterative Design Learnings
After we tested our prototypes through user testing we were able to get important feedback on our flows and product. It was most important for us to be able to test the filters that users would be able to use to find activities and things to do on their trips. This would be the main feature of the product and if anything was unclear or confusing while trying to accomplish this goal, it was important to know and understand early on.
The feedback we got from user testing was really valuable and helped us tweak the way we were showing our filters, specifically the city option. Users were confused and overwhelmed by the amount of cities displayed and expressed being able to just search for the location they were travelling to would be a lot easier. We also needed to iterate on the hierarchy of the filters as it was causing confusion for the users.
Aside from the feedback we received from user testing, as our developers worked to build out the designs, we got amazing feedback regarding some crucial flows and screens that were missing. Jen and Lilly, our developers, were able to bring up important gaps in our design.
Implementation Details
Chosen tools
- Render.com: For its ease of use, scalability, and seamless deployment of web applications.
- ElephantSQL: A managed PostgreSQL service that simplifies database management and ensures reliability.
- Flask: A lightweight and flexible Python web framework that is easy to set up and extend.
- Tailwind CSS: For utility-first CSS framework, allowing rapid styling without writing custom CSS.
- React: A popular JavaScript library for building dynamic and responsive user interfaces.
- Google Places API: For accessing rich location data, enhancing the application's functionality.
Journey of a Request
1. Frontend Request Initiation:
- A user interacts with the frontend, clicking a button to fetch a list of destinations.
- This triggers an HTTP request to the backend via Axios in React.
2. Backend Request Handling:
- The Flask backend receives the request at a specific endpoint.
- Flask processes the request, interacting with the database (ElephantSQL) to retrieve or manipulate data.
3. Database Interaction:
- The Flask server queries ElephantSQL (PostgreSQL database) using SQLAlchemy.
- The database executes the query and returns the results to the Flask server.
4. Response Construction:
- Flask constructs a JSON response containing the requested data or a success/error message.
- This JSON response is sent back to the frontend.
5. Frontend Response Handling:
- The frontend receives the JSON response and updates the UI accordingly.
- For example, it renders a list of destinations, user itineraries, and user-chosen places.
Improvements
- Scalability: Introduce load balancing and to handle increased traffic.
- Performance: Implement caching mechanisms to reduce database load, API requests and improve response times.
- Security: Enhance security with OAuth for authentication, encrypted database connections, and secure API endpoints.
- User Experience: Improve the frontend with more interactive elements, better error handling, and performance optimization (e.g., lazy loading, code splitting).
Technical challenges
The hardest part of development was debugging, as we encountered numerous errors and conflicts, particularly during github merges, which required more time than actual coding. Additionally, following a design created by another person was challenging.
Our app has potential scaling issues, including single server bottlenecks, database load, and API rate limits. To address these, we can implement load balancing, database indexing, caching, and optimize both backend and frontend performance. Key takeaways include the importance of effective debugging strategies, scalable session management, optimized deployment processes, and continuous monitoring to ensure the application can handle increased traffic and usage efficiently.
Future Steps
We may continue working on this application so that it becomes a feature that can be easily integrated into other platforms.
Learnings
Product Manager Learnings:
Danny Oja
Designer Learnings:
Daniella Bock
Designer Learnings:
Jo Sturdivant
- Adapting to an Established Team: Joining the team in week 6 of 8 was challenging, as I had to quickly adapt to existing workflows, dynamics, and goals. This mirrors real-world situations where you often integrate into teams mid-project, and flexibility is essential.
- Work-Blocking for Efficiency: With only two weeks to complete the project, I learned the importance of a structured work-blocking system. This approach allowed me to manage my time effectively and meet deadlines under pressure.
- Making Data-Driven Design Decisions: Unlike my past projects, I had to rely on research conducted by others. This was a valuable experience in using pre-existing data to guide design decisions, helping me focus on the core insights without starting from scratch.
Developer Learnings:
Lilibeth Ocando
Developer Learnings:
Vanady Beard
&
As the back-end developer, I learned how important it is to create efficient and reliable systems that support the entire application. This experience also taught me the importance of optimising the database and ensuring the backend is scalable and easy to maintain.
Developer Learnings:
Stephen Asiedu
&
As a back-end developer, I've come to understand the importance of being familiar with various database systems and modules. This knowledge enables me to build diverse applications and maintain versatility in my work. I've also learned that the responsibility for making the right choices rests on my shoulders, guided by my best judgement.
Developer Learnings:
Jennifer Monteiro Costa
&
Developer Learnings:
Maurquise Williams
&
- Process of Creating an MVP: Developing a Minimum Viable Product (MVP) taught me how to focus on delivering core functionalities balancing between essential features and avoiding scope creep.
- Collaboration in a Real-World Tech Setting: This experience taught me how to collaborate efficiently in a fast-paced tech environment, keeping the team aligned and productive, even while working remotely across time zones.
- Sharpening Critical Thinking and Problem-Solving Skills: This experience honed my ability to think critically and solve problems efficiently. By tackling challenges and finding quick solutions, I sharpened my decision-making and troubleshooting skills in a dynamic, real-world setting.
Developer Learnings:
Jeremiah Williams
&
All in all this experience was very awesome I learned that in coding with others being transparent is key
Developers Learnings:
Justin Farley
&
I learned how important communication is when working with a team. Communication provides understanding, advice, ideas, and much more. While working with the product team, I’ve found that communication keeps everything flowing smoothly. Working with a team also showed me that every member brings something different to the table and we all have to work together in order to align and meet our end goal.