Skip to content

Repository files navigation

🌍 WanderLust

A full-stack travel listing web application inspired by Airbnb, where users can explore destinations, create property listings, upload images, leave reviews, and manage their own listings securely.

Built using the MERN backend stack (Node.js, Express.js, MongoDB) with EJS templating and deployed-ready architecture.


✨ Features

👤 Authentication

  • User Registration
  • User Login & Logout
  • Secure Password Hashing using Passport.js
  • Session Authentication
  • Persistent Login Sessions using MongoDB (connect-mongo)

🏡 Listings

  • Create new property listings
  • Edit existing listings
  • Delete listings
  • Upload listing images using Cloudinary
  • Responsive listing cards
  • Individual listing details page

📍 Maps & Geolocation

  • Interactive Mapbox integration
  • Automatic location geocoding
  • Property location displayed on map
  • Custom map markers with popup information

⭐ Reviews

  • Add reviews to listings
  • Rating system
  • Delete reviews
  • Only logged-in users can review
  • Review ownership authorization

🔐 Authorization

  • Only authenticated users can create listings
  • Only listing owners can edit/delete listings
  • Only review owners can delete reviews

💬 Flash Messages

  • Success messages
  • Error messages
  • Validation feedback

🖼 Image Upload

  • Cloudinary integration
  • Multer middleware
  • Image storage in cloud

📱 Responsive UI

  • Bootstrap 5
  • Mobile Friendly
  • Clean Airbnb-inspired design

🛠 Tech Stack

Frontend

  • HTML5
  • CSS3
  • Bootstrap 5
  • EJS
  • JavaScript

Backend

  • Node.js
  • Express.js

Database

  • MongoDB Atlas
  • Mongoose

Authentication

  • Passport.js
  • Passport Local Strategy
  • Express Session
  • Connect Mongo

Cloud Services

  • Cloudinary
  • Mapbox

📂 Project Structure

WanderLust/
│
├── controllers/
├── models/
├── routes/
├── middleware.js
├── utils/
├── public/
│   ├── css/
│   ├── js/
│   └── favicon.svg
│
├── views/
│   ├── layouts/
│   ├── includes/
│   ├── listings/
│   ├── users/
│   └── error.ejs
│
├── app.js
├── package.json
└── README.md

🚀 Installation

Clone the repository

git clone https://github.com/yourusername/wanderlust.git

Go into the project

cd wanderlust

Install dependencies

npm install

Create a .env file

ATLAS_URI=your_mongodb_connection_string

CLOUD_NAME=your_cloudinary_name

CLOUD_API_KEY=your_cloudinary_key

CLOUD_API_SECRET=your_cloudinary_secret

MAP_TOKEN=your_mapbox_token

SECRET=your_session_secret

Run the application

npm start

Visit

http://localhost:8080

🔒 Environment Variables

Variable Description
ATLAS_URI MongoDB Atlas Connection URL
CLOUD_NAME Cloudinary Cloud Name
CLOUD_API_KEY Cloudinary API Key
CLOUD_API_SECRET Cloudinary Secret
MAP_TOKEN Mapbox Access Token
SECRET Session Secret

📸 Screenshots

Add screenshots here after deployment.

Example:

  • Home Page
  • Listing Details
  • Login
  • Register
  • Add Listing
  • Map View

🎯 Future Improvements

  • Search functionality
  • Property categories
  • Wishlist/Favorites
  • Booking system
  • Payment Gateway Integration
  • User Profile
  • Google OAuth
  • Email Verification
  • Admin Dashboard
  • Notifications

📚 Learning Outcomes

This project helped me gain practical experience with:

  • MVC Architecture
  • RESTful Routing
  • Authentication & Authorization
  • Session Management
  • Cloud Storage
  • Geocoding APIs
  • Middleware
  • Error Handling
  • CRUD Operations
  • MongoDB Relationships
  • Deployment Preparation

🤝 Contributing

Contributions, issues, and feature requests are welcome.

Feel free to fork the project and submit a pull request.


📄 License

This project is licensed under the MIT License.


👨‍💻 Author

Amit Chauhan

GitHub: https://github.com/amitx231

LinkedIn: https://www.linkedin.com/in/amitx231


⭐ If you like this project, don't forget to star the repository!

About

A full-stack Airbnb-inspired travel listing platform built with Node.js, Express.js, MongoDB Atlas, Passport.js, Cloudinary, and Mapbox featuring authentication, image uploads, reviews, and interactive maps.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages