Jinah Lee

Airbnb App Clone

React Native, Redux, Socket.IO

Airbnb App clone project. After completing the Airbnb site clone, I decided to clone the app using React Native. It was a solo project completed in less than three weeks.

What I Implemented

airbnb app signin
Signup and Login

  • Created reusable input and form component
  • Created reusable button component
  • Implemented Yup and Joi for error handling

Homepage

  • Created search filter
  • Implemented Wix calendar picker library
  • Created counter component
  • Implemented redux to store user selected data

airbnb app home
airbnb app list
List and Details

  • Created reusable card component
  • Implemented Google maps
  • Created custom image slider

Host

  • Enabled adding image using native ImagePicker
  • Enabled getting user's current location

airbnb app host
airbnb app messaging
Messaging

  • Creating socket connection
  • Implemented live sending and receiving of messages

Features Componentized

Through this project, I learned the importance of reusable components. I tried to document them so that I can expand them into more projects later.

Buttons
butotn
import * as Button from "../components/Button.js";
  <Button.BtnContain
    icon="search"
    label="Next"
    labelcolor={colors.white}
    color={colors.red}
    size="small"
    disabled={false}
    onPress={() => onNavigate()}
  />
Lists
butotn
import * as List from "../components/List.js";

<ListItem.Default
  title="Title"
  secondary="Secondary Text"
  containedicon="location"
  onPress={() => onNavigate(item.title)}
/>

<List.UserList
  title="User Name"
  secondary="Secondary Text"
  image={userimage}
  meta={item.dates}
  onPress={() => handleNavigation(item)}
  RightActions={() => (
    <DeleteItem onPress={() => handleDelete(item)} />
  )}
/>
Cards
butotn
import * as Cards from "../components/Cards.js";

<Cards.Image
  image={image}
  sub="Subheader"
  title="Title"
  secondary="Secondary text"
  action="View More"
  onPress={() => console.log(item)}
/>