Our app is a cross-platform mobile application developed using Expo and React Native, aimed at enhancing the travel experience for users. Designed as a comprehensive travel companion, the app offers a suite of tools and features to assist travelers in planning, navigating, and enjoying their journeys with ease. This is a university project for a Software Development Methods course.
You can find a video demo of our app here.
- As a user, I desire a page that displays a map highlighting the countries I have previously traveled to.
- As a user, I want to have a page for my past trips that shows me what my itinerary was for each vacation.
- As a user, I want to have the ability to customize my profile based on a rating of how much I enjoy activities involving sport, arts and food.
- As a user, I want to have the ability to customize my profile based on a rating of how busy I would like my recommended itinerary to be.
- As a user, I want to get recommendations on what city to visit based on a country I chose.
- As a user, I want to get recommendations for my next trip in the city I chose based on my profile and a budget I want to specify.
- As a user, I want to see the weather in the city I will travel to when I get my recommendation.
- As a user, I want a generated itinerary for each day of my trip.
- As a user, I want to have a slider that lets me adjust how busy the itinerary is, after I get the recommendation.
- As a user, I want a centralized platform to store all my travel-related tickets, including transportation and museum entries, for easy access and organization.
- As a user, I want to have an explore page about new countries through rich content covering their traditions, prices, local events, and other relevant information.
- As a user, I want to receive timely notifications and reminders for essential travel-related tasks such as flight check-ins and hotel reservations to stay organized during my trip.
- As a user, I want to create packing lists tailored to each trip, with suggested items based on the destination, weather forecast, and planned activities.
- As a user, I want the option to sync my trip details with popular calendar apps like Google Calendar or Apple Calendar, ensuring seamless integration and avoiding scheduling conflicts.
- As a user, I want to have a button where I can donate to support the application development.
You can see our backlog here.
We created them to better understand the designs, code architecture, and proposed implementation of the complex software systems.
You can see them here and here.
You can see some of our commits where we refactorized our code here and here.
We used comments to clarify complex logic, serve as internal documentation, and facilitate maintenance and collaboration by explaining code functionality and decisions. They assist in debugging and provide historical context for code changes. You can see some examples here.
We implemented a design pattern that gives us the current authenticated user (called session) and either passes it down as a parameter to nested children components, or can be returned by the useAuth()
hook.
We used both of the afforementioned approaches in our code. Passing the session to the nested children in the app is done like this:
src/app/_layout.tsx:
return (
<AuthProvider>
<Stack>
// all pages in this stack can receive the current session as a parameter
</Stack>
</AuthProvider>
);
Then we can obtain the session in one of our renders:
export default function Account({ session }: { session: Session }){
// we can access session here
}
Or by calling the useAuth()
hook:
const { session } = useAuth();
We used AI tools like ChatGPT and GitHub Copilot for a lot of stuff, from solving bugs and generating code to even writing this readme file, you can see some examples here.