Giter VIP home page Giter VIP logo

fa19-281-tech-phantoms's Introduction

Team Hackathon Project

Airbnb - Rent or List a property

Team members :

Darshil Kapadia

Kavina Desai

Shreyam Kela

Vinay Kovuri

Project Description

Airbnb application is a prototype of the original Airbnb website where users can register as owners or travelers. Owners post a particular property by providing specific details such as the location of the property, number of bedrooms, bathrooms, available dates, pictures and so on. If a user registers as a traveler, they can search for a particular property based on the location and the dates of travel. A traveler can book a property by submitting their payment details on the payment page. All the booked trips of the traveler are visible in the Traveler trips page. On the other hand, an owner can view the names of the travelers who booked their property. Moreover, after a booking is successful, a traveler can even review it by giving comments on it.

Project Modules

(1) User Registration / Login Service - This service handles the sign up and login of user on airbnb app. Hashed passwords are stored using Bcrypt.

(2) Dashboard Service - This microservice takes care of the profile updation of the user on the website. Moreover it handles the traveler and owner dashboard.

(3) Property Service - This service handles the creation of a new property along with posting pictures, viewing of the created property and searching a property.

(4) Booking Service - This service looks after the booking part of the property and updating the traveler and owner dashboard accordingly.

Work breakdown

Module Name
User Registration / Login Shreyam
Dashboard Service Kavina
Property Service Darshil
Booking Service Vinay

Deployment details

  • Frontend :

    Frontend in developed using ReactJS, HTML, CSS, and Bootstrap. The web app is deployed on Heroku with CI/CD. Therefore, whenever a code change is pushed to the master branch of the repo, the changed code is automatically deployed and it reflects on the frontend.

    Frontend URL : https://airbnb-project-cmpe281.herokuapp.com/homepage

  • Backend

    Login Service : It is deployed on the AWS managed Kubernetes cluster - EKS, having two worker nodes with two pods in each of them.

    Dashboard Service : This backend service is deployed on AWS ECS. There is a network load balancer in front of the three ECS tasks. Moreover, the whole process is automated using the CI/CD pipeline with AWS services such as CodeBuild and ECR.

    Property Service : This is deployed on AWS ECS having three tasks kept behind a network load balancer. The docker image is pushed to Elastic Container Registry (ECR).

    Booking Service : It is deployed on the AWS managed Kubernetes cluster - EKS, having two worker nodes with two pods in each of them.

Architecture diagram

Architecture Diagram

AKF Scaling cube

  • X-axis scaling : The X-axis Scale has been addressed by replicating each microservice across multiple instances which increases the throughput and helps in avoiding failures.

  • Y-axis Scaling: By dividing each service based on their functions and deploying it to separate AWS accounts, our application also addresses the Y-axis scaling.

  • Z-axis Scaling : The NoSql database i.e MongoDB has been sharded to address the Z-axis Scale

Contributions

  • Kavina:

    • Concentrated on the backend go routes for the user dashboard
    • Worked on designing the owner and traveler's dashboard pages and traveler update profile page
    • Worked to create a CI/CD pipeline on AWS with CodeBuild, ECS cluster, ECR and load balancer
    • Created mongodb sharding on the dashboard nosql database cluster for horizontal scalability
    • Documentation of the hackathon project
  • Darshil

    • Worked on UI related to posting of property and search results
    • Developed the whole property microservice.
    • Worked on configuring CDN with S3.
    • Worked on codebuild to trigger building of docker image on the event of pushing on master branch.
    • worked on creating mongoshards for property microservice.
  • Shreyam

    • Developed the end-to-end flow of the User Registration / Login micro service.
    • Built the Go backend for Login and Sign Up with password hashing using Bcrypt.
    • Created the Login and Signup web pages for travelers and owners, using ReactJS.
    • Deployed the frontend of the Airbnb app on Heroku with CI/CD.
    • Worked with the team in deploying the Login micro service to Amazon managed Kubernetes cluster - EKS.
    • Configured an Amazon API Gateway as a single entry point for the frontend to connect to the different load balancers of the 4 micro services.
  • Vinay

    • Implemented the Booking microservice. It consists of various operations on adding, fetching, deleting and updating the booking.
    • Implemented MongoDB sharding on AWS for booking microservice.
    • Inputs about the architecture of the project.
    • Worked on front modules like payment and pages that included operations on booking microservice.
    • Implemented deployment of docker images of booking microservice on AWS EKS.

Documentation links

EKS cluster deployment

AWS ECS CI/CD deployment

Heroku CI/CD Deployment

fa19-281-tech-phantoms's People

Contributors

darshilpk3 avatar kovurivinay avatar shreyamkela avatar desaikavina avatar paulnguyen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.