Skip to content

A full-stack clone of the Airbnb platform, designed to replicate its core features including property listings, user authentication, booking system, and responsive UI. Built using Node.js, Express.js, MongoDB, bootstrap this project is aimed at learning and showcasing skills in modern web development and deployment.

License

Notifications You must be signed in to change notification settings

SiddheshKharade07/Airbnb-clone

Repository files navigation

🚀 Airbnb Clone 🏠💻

Node.js Express MongoDB EJS Passport.js MIT License

A full-stack clone of the Airbnb platform built using Node.js, Express, MongoDB, and EJS templating to replicate its core features and provide a seamless user experience.


📖 Description

The Airbnb Clone project is a full-stack web application built using Node.js, Express, MongoDB, and EJS templating. It replicates the core functionalities of the Airbnb platform — including user authentication, listing management, reviews, and filtering — with a clean, responsive, and intuitive interface.

This project showcases server-side rendering using EJS, combined with Express.js backend logic and MongoDB. It integrates Passport.js for authentication and Cloudinary for image storage, offering a production-ready structure for scalable apps.

The Airbnb Clone demonstrates MVC architecture, routing, middleware handling, and secure authentication.

✨ Features

User Authentication – Secure login and registration using Passport.js

Listing Management – Create, view, edit, and delete property listings

Reviews System – Add and manage user reviews with ratings and comments

Image Upload – Upload and manage images using Cloudinary

Filtering & Categories – Filter listings based on amenities, price, or category

Error Handling – Centralized error handling using custom middleware and ExpressError

Responsive UI – Dynamic and responsive EJS templates with modular includes and layouts

Data Validation – Ensures consistent and valid user input using schema-based validation

🧰 Tech Stack Technology Description Templating Engine EJS Backend Node.js + Express.js Database MongoDB (Mongoose ORM) Authentication Passport.js Image Upload Cloudinary Validation Schema-based validation (schema.js) Styling Custom CSS Error Handling Custom Middleware + ExpressError Utility


⚙️ How to Run

Clone the repository:

git clone https://github.com/SiddheshKharade07/Airbnb-clone.git

cd Airbnb-clone

Install dependencies:

npm install

Set up environment variables:

CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_KEY=your_api_key CLOUDINARY_SECRET=your_api_secret ATLASDB_URL=your_mongodb_connection_url SECRET=your_session_secret

Run the application:

🧪 Testing Instructions

Launch the app using npm start

Open http://localhost:8080

Register and log in using Passport authentication

Create, view, edit, and delete listings

Upload images using Cloudinary integration

Add reviews and test category filters

Check validation and error handling

📦 API Overview Method Endpoint Description GET /listings Display all listings POST /listings Create a new listing GET /listings/:id Show a specific listing PUT /listings/:id Update an existing listing DELETE /listings/:id Delete a listing POST /reviews Add a review GET /reviews/:id Get reviews for a listing 👤 Author

Siddhesh Kharade 🙋‍♂️


📸 Screenshots

Home Page Listing Page Add Listing

📁 Project Structure

├── 📁 controllers/
│   ├── 📄 listings.js
│   ├── 📄 reviews.js
│   └── 📄 users.js
├── 📁 init/
│   ├── 📄 data.js
│   └── 📄 index.js
├── 📁 models/
│   ├── 📄 listing.js
│   ├── 📄 review.js
│   └── 📄 user.js  
├── 📁 public/
│   ├── 📁 css/
│   │   ├── amenities.css
│   │   ├── filters.css
│   │   ├── nav.css
│   │   ├── rating.css
│   │   └── style.css
│   ├── 📁 images/ (amenity and feature icons)
│   └── 📁 js/
│       ├── datepicker.js
│       ├── filter.js
│       ├── map.js
│       └── script.js
├── 📁 routes/
│   ├── filter.js
│   ├── listing.js
│   ├── review.js
│   └── user.js
├── 📁screenshots/ 
├── 📁 utils/
│   ├── ExpressError.js
│   ├── amenities.js
│   ├── filterCategories.js
│   └── wrapAsync.js
├── 📁 views/
│   ├── 📁 includes/
│   │   ├── amenities.ejs
│   │   ├── flash.ejs
│   │   ├── footer.ejs
│   │   └── navbar.ejs
│   ├── 📁 layouts/
│   │   └── boilerplate.ejs
│   ├── 📁 listings/
│   │   ├── edit.ejs
│   │   ├── index.ejs
│   │   ├── new.ejs
│   │   └── show.ejs
│   ├── 📁 users/
│   │   ├── login.ejs
│   │   └── signup.ejs
│   └── error.ejs
├── 📄 app.js
├── 📄 cloudConfig.js
├── 📄 middleware.js
├── 📄 schema.js
├── 📄 package.json
├── 📄 package-lock.json
├── 📄 **README**.md
├── 📄 .env
└── 📄 .gitignore

GitHub: SiddheshKharade07

Email: hnkharade@gmail.com

📝 License

This project is licensed under the **MIT** License 📄

About

A full-stack clone of the Airbnb platform, designed to replicate its core features including property listings, user authentication, booking system, and responsive UI. Built using Node.js, Express.js, MongoDB, bootstrap this project is aimed at learning and showcasing skills in modern web development and deployment.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published