Overview
For my iXperience Full Stack Coding course, the final project was to create a functioning home-rental system replicating the main services of Airbnb. This was my first full stack project, as well as the first time I used Angular or built an API! I built 5 components for this project:
- Consumer mobile app - allows users to join, view listed properties, and create bookings.
- Provider mobile app - allows users to join, create and update their rental property listings, and manage booking requests.
- Admin panel web app - allows admins to view all registered app users, listings and booking requests.
- REST API - for communication between the applications and database.
- MySQL database - for storing account information, listings, and bookings.
Tech Stack
The consumer and provider apps are build with Angular's Ionic framework, with Node.js for the backend. The admin panel is built with Angular. The API uses Express and connects to a MySQL database.
Timeline
July to August 2019 (~5 weeks)
Description
On each app, users are first prompted to log in. Users of the Consumer and Provider apps are also able to register an account, but this is not a feature on the Admin panel for security purposes. All users are authenticated by the API using JWT (JSON Web Tokens). Passwords are hashed using bcrypt.
Consumer bnb app
Provider bnb app
Admin panel
Feel free to also check out my code for the API and the database.
Next Steps
My future goals for this project would be to add to the design and features. I would love to create better branding and have all applications follow a unique, cohesive design. The grading of this project was on functionality alone, so I did not spend a lot of time on the UI/UX. Regarding features:
- On the consumer app, I would like to make the search bar functional so that once a lot of properties are added, users can find them by city or country. I would also like to allow users to edit or delete bookings.
- On the provider app, I would like to allow providers to add multiple image URLs. I already have the database set up with a listing-imageURL mapping table, so I just need to give the user multiple fields to add in links. I would like to try giving them the ability to add or subtract input fields as necessary!
- On the admin panel, I would like to try and add analytics or a summary on the Home page. I would also like to add the feature of an admin being able to delete accounts or reset passwords.