Team varIsDeadpresentTrippin
Make trip planning a breeze with Trippin!
Trippin is a mobile trip planning app that makes scheduling and sharing information about trips seamless. As a team we'd all experienced the chaos that is planning group trips where half the travel information is sent via email, accommodation confirmations are sent via Facebook, and the rest of the details are scattered across two months worth of WhatsApp chats. We wanted to create a product that would streamline that process, and give trip members one place to could go to see every detail about their upcoming trips. Creating a flexible user experience was particularly important to us. We wanted admins to have control over who joined their groups, while still allowing trip members to have the freedom to add, edit and update the travel, stay and activity choices too. Trip members can also chat privately within the app about their trip plans, and stay up-to-date with one another during their trip. Meeting a relevant real-world need was particularly important to us, and we're proud to have achieved that with Trippin.
The Team
Justyna Gromadzinska
Lala Oyegun
Stavros Polikas
Matt Barker
Jack Smith
Technologies
![Technologies section image](https://images.prismic.io/northcoders/Zg_MDxrFxhpPBU_L_Trippin2.png?auto=compress%2Cformat&fit=max&q=60&w=800)
We used: Back-end: Node.js, Express, Atlas (Hosting database on the cloud), Mongodb, Render (Hosting back-end), Jest (Test-Driven-Development), Socket.io (chat server) Front-end: React Native, Expo, React Navigation library, React Native Date Picker library, Socket.IO Client
To give users ease of access during travel, we decided to make our idea into a mobile app by using React Native and Expo. The React Navigation library allowed us to easily structure the user journey with its stacked route structure. We also used a Date Picker compatible with React Native, to give users a familiar and more easeful experience. Lastly, the Socket.io client establishes connection to the server allowing instant chat data exchange.
The travel app server is built with Node using the Express framework. We went with Express because it simplifies handling routes, requests and responses. This allowed us to define routes easily, making it straightforward to create our APIs and web endpoints. In addition, the inbuilt middleware functions allowed custom error handling. We chose MongoDB because it was a great opportunity for the entire team to learn a new technology and gain experience structuring data models in a non-relation way. We utilised Mongoose for data modelling and MongoDB Atlas for hosted data storage. We implemented Socket.io for real-time group chat features to enable instantaneous communication between travellers. The server’s RESTful APIs support CRUD operations on user and trip entities, providing a comprehensive interface for managing user data within the app.
Challenges Faced
Working with a non-relational database, and getting our schema design and structure right was a continuous challenge. We chose a nested structure using both arrays and objects and this had pros and cons. On the back-end, our schema structure informed how easily we could query the database with single operations and get all the required data. On the front-end, it affected the way we could manipulate our data in React Native. We found ourselves having to return to our endpoints, schema and tests, to restructure our processes throughout.