Skip to content

VedantPatil-99/Airbnb

Repository files navigation

Airbnb

This is the Airbnb Web App Clone (Full stack project)

Airbnb first look

This screenshot is after 60% completion.

Airbnb first look

Show Page UI

show.ejs show.ejs show.ejs show.ejs show.ejs show.ejs

Web Application Architecture

flowchart TB
    subgraph Client
        Browser["Web Browser"]
    end

    subgraph "Frontend Layer"
        Views["Views (EJS)"]:::frontend
        StaticAssets["Static Assets"]:::frontend

        subgraph "View Components"
            ListingViews["Listing Views"]:::frontend
            UserViews["User Views"]:::frontend
            SharedViews["Shared Components"]:::frontend
            LayoutViews["Layout Templates"]:::frontend
        end

        subgraph "Static Files"
            CSS["CSS Files"]:::frontend
            ClientJS["Client JavaScript"]:::frontend
            Icons["Icons"]:::frontend
        end
    end

    subgraph "Application Layer"
        ExpressServer["Express Server"]:::app
        CloudConfig["Cloud Configuration"]:::app

        subgraph "Routes"
            ListingRoutes["Listing Routes"]:::route
            ReviewRoutes["Review Routes"]:::route
            UserRoutes["User Routes"]:::route
        end

        subgraph "Controllers"
            ListingController["Listing Controller"]:::controller
            ReviewController["Review Controller"]:::controller
            UserController["User Controller"]:::controller
        end

        subgraph "Middleware"
            MainMiddleware["Main Middleware"]:::middleware
            ErrorHandler["Error Handling"]:::middleware
            AsyncHandler["Async Handler"]:::middleware
        end
    end

    subgraph "Data Layer"
        subgraph "Models"
            ListingModel["Listing Model"]:::model
            ReviewModel["Review Model"]:::model
            UserModel["User Model"]:::model
        end

        SchemaValidation["Schema Validation"]:::model
        Database[(MongoDB)]:::database

        subgraph "Initialization"
            InitIndex["Init Index"]:::init
            InitData["Sample Data"]:::init
        end
    end

    %% Relationships
    Browser <--> Views
    Browser <--> StaticAssets
    Views --> |Renders| ListingViews & UserViews & SharedViews & LayoutViews
    StaticAssets --> |Serves| CSS & ClientJS & Icons

    ExpressServer --> |Routes Requests| ListingRoutes & ReviewRoutes & UserRoutes
    ListingRoutes --> ListingController
    ReviewRoutes --> ReviewController
    UserRoutes --> UserController

    MainMiddleware -.-> ExpressServer
    ErrorHandler -.-> ExpressServer
    AsyncHandler -.-> ExpressServer

    ListingController --> ListingModel
    ReviewController --> ReviewModel
    UserController --> UserModel

    ListingModel & ReviewModel & UserModel --> Database
    SchemaValidation -.-> ListingModel & ReviewModel & UserModel

    InitIndex --> InitData
    InitData --> Database

    %% Click Events
    click ListingViews "https://github.com/VedantPatil-99/Airbnb/tree/main/views/listings/"
    click UserViews "https://github.com/VedantPatil-99/Airbnb/tree/main/views/users/"
    click SharedViews "https://github.com/VedantPatil-99/Airbnb/tree/main/views/includes/"
    click LayoutViews "https://github.com/VedantPatil-99/Airbnb/tree/main/views/layouts/"
    click CSS "https://github.com/VedantPatil-99/Airbnb/tree/main/public/css/"
    click ClientJS "https://github.com/VedantPatil-99/Airbnb/tree/main/public/js/"
    click Icons "https://github.com/VedantPatil-99/Airbnb/tree/main/public/icon/"
    click ExpressServer "https://github.com/VedantPatil-99/Airbnb/blob/main/app.js"
    click CloudConfig "https://github.com/VedantPatil-99/Airbnb/blob/main/cloudConfig.js"
    click ListingRoutes "https://github.com/VedantPatil-99/Airbnb/blob/main/routes/listing.js"
    click ReviewRoutes "https://github.com/VedantPatil-99/Airbnb/blob/main/routes/review.js"
    click UserRoutes "https://github.com/VedantPatil-99/Airbnb/blob/main/routes/user.js"
    click ListingController "https://github.com/VedantPatil-99/Airbnb/blob/main/controllers/listings.js"
    click ReviewController "https://github.com/VedantPatil-99/Airbnb/blob/main/controllers/reviews.js"
    click UserController "https://github.com/VedantPatil-99/Airbnb/blob/main/controllers/users.js"
    click MainMiddleware "https://github.com/VedantPatil-99/Airbnb/blob/main/middleware.js"
    click ErrorHandler "https://github.com/VedantPatil-99/Airbnb/blob/main/utils/ExpressError.js"
    click AsyncHandler "https://github.com/VedantPatil-99/Airbnb/blob/main/utils/wrapAsync.js"
    click ListingModel "https://github.com/VedantPatil-99/Airbnb/blob/main/models/listings.js"
    click ReviewModel "https://github.com/VedantPatil-99/Airbnb/blob/main/models/review.js"
    click UserModel "https://github.com/VedantPatil-99/Airbnb/blob/main/models/user.js"
    click SchemaValidation "https://github.com/VedantPatil-99/Airbnb/blob/main/schema.js"
    click InitIndex "https://github.com/VedantPatil-99/Airbnb/blob/main/init/index.js"
    click InitData "https://github.com/VedantPatil-99/Airbnb/blob/main/init/data.js"

    %% Styles
    classDef frontend fill:#2196F3,stroke:#1565C0,color:white
    classDef app fill:#4CAF50,stroke:#2E7D32,color:white
    classDef route fill:#81C784,stroke:#4CAF50,color:black
    classDef controller fill:#66BB6A,stroke:#43A047,color:white
    classDef middleware fill:#FF5252,stroke:#D32F2F,color:white
    classDef model fill:#FFB74D,stroke:#FF9800,color:black
    classDef database fill:#FFA726,stroke:#F57C00,color:white
    classDef init fill:#90A4AE,stroke:#607D8B,color:white
Loading
Airbnb/
├─ .env
├─ .gitignore
├─ .vscode/
│  └─ settings.json
├─ app.js
├─ cloudConfig.js
├─ controllers/
│  ├─ listings.js
│  ├─ reviews.js
│  └─ users.js
├─ init/
│  ├─ data.js
│  ├─ index.js
│  └─ oldData.js
├─ middleware.js
├─ models/
│  ├─ listings.js
│  ├─ review.js
│  └─ user.js
├─ package-lock.json
├─ package.json
├─ public/
│  ├─ css/
│  │  ├─ components/
│  │  │  ├─ curnc_langM.css
│  │  │  ├─ footer.css
│  │  │  ├─ map.css
│  │  │  └─ rating.css
│  │  ├─ filters.css
│  │  ├─ reviews.css
│  │  ├─ showDetails.css
│  │  └─ style.css
│  ├─ icons/
│  │  ├─ Airbnb_firstlook.png
│  │  ├─ Airbnb_icon.png
│  │  └─ filterIcons/
│  │     ├─ a-frames.jpg
│  │     ├─ amazing_pools.jpg
│  │     ├─ amazing_views.jpg
│  │     ├─ arctic.jpg
│  │     ├─ beach.jpg
│  │     ├─ beachfront.jpg
│  │     ├─ bed&breakfasts.jpg
│  │     ├─ boats.jpg
│  │     ├─ cabins.jpg
│  │     ├─ camping.jpg
│  │     ├─ castles.jpg
│  │     ├─ caves.jpg
│  │     ├─ countryside.jpg
│  │     ├─ creative-spaces.jpg
│  │     ├─ desert.jpg
│  │     ├─ design.jpg
│  │     ├─ domes.jpg
│  │     ├─ farms.jpg
│  │     ├─ golfing.jpg
│  │     ├─ historical-homes.jpg
│  │     ├─ island.jpg
│  │     ├─ lake.jpg
│  │     ├─ lakefront.jpg
│  │     ├─ luxe.jpg
│  │     ├─ mansions.jpg
│  │     ├─ minsus.jpg
│  │     ├─ Naruto.jpg
│  │     ├─ off-the-grid.jpg
│  │     ├─ OMG.jpg
│  │     ├─ parks.jpg
│  │     ├─ rooms.jpg
│  │     ├─ tiny-homes.jpg
│  │     ├─ top-cities.jpg
│  │     ├─ top-of-the-world.jpg
│  │     ├─ towers.jpg
│  │     ├─ treehouses.jpg
│  │     ├─ trending.jpg
│  │     ├─ tropical.jpg
│  │     └─ windmills.jpg
│  ├─ js/
│  │  ├─ amenities.js
│  │  ├─ bootstrap.js
│  │  ├─ components/
│  │  │  ├─ currencyM.js
│  │  │  ├─ langM.js
│  │  │  ├─ map.js
│  │  │  ├─ searchBar.js
│  │  │  └─ showRatings.js
│  │  ├─ filters.js
│  │  └─ randomDays.js
│  └─ screenshots/
│     ├─ show.ejs.png
│     ├─ show2.ejs.png
│     ├─ show3.ejs.png
│     ├─ show4.ejs.png
│     ├─ show5.ejs.png
│     └─ show6.ejs.png
├─ README.md
├─ routes/
│  ├─ listing.js
│  ├─ review.js
│  └─ user.js
├─ schema.js
├─ utils/
│  ├─ amenities.js
│  ├─ ExpressError.js
│  ├─ SVGs.js
│  └─ wrapAsync.js
└─ views/
   ├─ error.ejs
   ├─ includes/
   │  ├─ components/
   │  │  ├─ flash.ejs
   │  │  ├─ footer.ejs
   │  │  ├─ logo.ejs
   │  │  ├─ navbar.ejs
   │  │  └─ searchBar.ejs
   │  ├─ filters.ejs
   │  ├─ modalBox/
   │  │  ├─ allReviewsM.ejs
   │  │  ├─ currencyM.ejs
   │  │  ├─ filtersM.ejs
   │  │  ├─ langM.ejs
   │  │  ├─ logModal.ejs
   │  │  ├─ modal.ejs
   │  │  ├─ showAmenitiesM.ejs
   │  │  └─ showDescM.ejs
   │  └─ showDetails.ejs
   ├─ layouts/
   │  └─ boilerplate.ejs
   ├─ listings/
   │  ├─ edit.ejs
   │  ├─ index.ejs
   │  ├─ new.ejs
   │  └─ show.ejs
   ├─ reviews/
   │  ├─ addReviews.ejs
   │  └─ allReviews.ejs
   └─ users/
      ├─ login.ejs
      └─ signup.ejs

About

Full Stack | This is the Airbnb Web App Clone

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published