Project description:

This is a second-hand marketplace mobile application, where users can buy and sell second-hand items, such as clothes, books, electronics, etc. The application is built with React Native, which allows the application to be deployed on both iOS and Android devices. The application is designed to be user-friendly and easy to navigate, with a clean and modern interface.


Technology used:

A mobile application, using React Native and Expo SDK 53 for the frontend, Supabase for the database. Installed Expo Go application on an IOS device for testing.


This application is developed using React Native, it allows for cross-platform development, enabling the same codebase to be used for both iOS and Android applications.


Application features:
  • Sign up and sign in users
  • Supabase has an authentication feature for user sign up. After the user signs up, the user will receive a verification email to verify the email address. After the user verifies the email address, the user can sign in with the email and password. Supabase uses hashed passwords. Hashing is one-way, when an user login, the password is hashed and compared with the hashed password stored in the database.


  • Upload images and files to the storage
  • Supabase has a storage feature that allows users to upload images and files. The user can select images from the phone image gallery or select files from the document picker, upload them to the storage, and render them in the application. Click on the file link can open the file to view in the browser.


  • Detect current location, or edit location if needed, and show location on map
  • Using "expo-location" dependency to detect the current location of the user. Using LocationIQ API to autocomplete the address when the user is editing the location. Using "react-native-maps" dependency to render the map and show the location with a marker on the map.


  • Add product listing
  • The user must fill in all the fields and include at least one image in the product listing form, otherwise it will not be submitted. The user can provide maximum 10 images for the product listing. The provided images can be previewed in the form and removed any if needed.


  • Filter products with name or categories
  • The user can select one or multiple categories to filter the products, click the categories again to unselected them. A search bar is also provided to search products by the product name. The searched product list is not included the products that are sold.


  • Render information related to the product and users in the chat dialog page
  • The chat dialog page shows the product information, such as the product name and product image, and the receiver 's name in the header. It involves joining serveral tables in the database to retrieve the information.


  • User friendly interface
    1. Include a lot of visual elements like icons and colors to make the UI looks professional
    2. Provide feedback for user actions, such as loading indicators and success messages
    3. Use alerts to get input from the users of important actions or inform errors
    4. Ensure the application is easy to use and navigate
    5. Render the lastest data to the users, like always scroll to the last message of the chat and show the products descending by time created
    6. Use and simple navigation to enhance user experience