Rev
notion image
Video preview

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.
notion image

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.