Short Explanation
Hotelvio is a hotel booking app built using React Native, meaning it is compatible with both Android and iOS devices. It's similar to popular apps like Tiket.com or Airbnb. Notably, this project was undertaken with the purpose of fulfilling the final assignment for the Hactiv8 course.
Project Goals
Here’s what users can do:
- log in to account
- Browse and view hotels
- Check room availability
- Book hotel rooms
Tech Stack Used
This project utilizes React Native to build multiplatform app, Redux for state management, Typescript for strong typing, React Native Navigation with RNN Screens for easy navigation setup
Spotlight
Use createAsyncThunk to perform asychronous tasks in Redux
Use
createAsyncThunk
in Redux to effortlessly handle asynchronous tasks. This utility streamlines the process of dispatching actions for API calls, making it simpler to manage loading, success, and error states.export const getHotelByCategory = createAsyncThunk( 'getHotelByCategory', async ({ category, rooms, checkInDate, checkOutDate, }: { category: string; rooms: Guest[]; checkInDate: Date; checkOutDate: Date; }) => { try { const res = fetchCategoryId(category).then((res) => fetchPropertybyCategory(res, rooms, checkInDate, checkOutDate).then( (res) => res ) ); return res; } catch (err) { throw err; } } );
Conventional Commit
In this project, My team and I decided to use conventional commit so the commit message is cleaner and easier to read. I've been using it since a while, I think it is awesome.
The Problems and How I Solved It
Initially, this project was meant to be a collaborative effort among four people. However, we encountered a setback when the other two team members essentially ghosted us, making communication and coordination impossible. As a result, the project continued with just two of us working on it. Fortunately, my past experience with React Native and TypeScript from my part-time work at Simplus proved to be quite valuable in this situation.
Lesson Learned
Every project is an opportunity for growth. From this experience, I realized the importance of clear communication, meticulous planning, and adaptability in the face of unexpected challenges.