This project is an Airbnb Clone built with some of the core functionalities of the original platform. It allows users to view, create, edit, and delete listings, register and log in securely, and store images using cloud storage.
- ✅ View, add, edit, and delete property listings.
- ✅ Secure user authentication and session management (using Passport.js).
- ✅ Upload and manage images (integrated with Cloudinary).
- ✅ Form validation and error handling using Joi.
- ✅ Flash messages for user feedback.
- ✅ Proxy deployment via Cloudflare Workers to ensure HTTPS.
- ✅ MongoDB Atlas database integration.
- ✅ MVC architecture for clean and modular codebase.
- Backend: Node.js, Express.js
- Templating Engine: EJS
- Database: MongoDB Atlas, Mongoose
- Authentication: Passport.js
- Session Management: express-session, connect-mongo
- Cloud Services: Cloudinary, Render, Cloudflare Workers
- File Uploads: multer
- Validation: Joi
- Styling: Bootstrap 5, Font Awesome
- Architecture: MVC
-
Clone the repository:
git clone https://github.com/hemant-rgb/airbnb-clone.git cd airbnb-clone -
Install dependencies:
npm install
-
Setup Environment Variables: Create a
.envfile and add the following:CLOUD_NAME=your_cloudinary_cloud_name CLOUD_API_KEY=your_cloudinary_api_key CLOUD_API_SECRETCODE=your_cloudinary_secret ATLASDB_URL=your_mongodb_atlas_connection_url SECRET=your_session_secret
-
Run the application:
npm start
-
Visit
http://localhost:8080in your browser.
airbnb-clone/
│
├── controllers/ # Route handlers
├── models/ # Mongoose models
├── public/ # Static assets (CSS, JS, Images)
├── routes/ # Express routes
├── views/ # EJS templates
├── .env # Environment variables (not committed)
├── app.js # Main application file
├── package.json # NPM configuration
└── README.md # Project documentation
This project is for educational purposes and not intended for production use.
For any questions or suggestions, feel free to reach out: hemantmachiwar76@gmail.com
© 2025 Hemant Machiwar. All rights reserved.