A full-stack travel listing web application where users can explore destinations, create and manage listings, share reviews, and discover places through interactive maps.
- 🔐 User Authentication – Secure sign-up, login, and logout with Passport.js
- 📝 Listings – Create, edit, and delete travel destination listings
- ⭐ Reviews – Leave reviews and ratings for destinations
- 🔎 Search & Filter – Easily find listings based on preferences
- 🗺 Map Integration – Interactive maps powered by Mapbox
- 📸 Image Uploads – Upload and manage images with Multer + Cloudinary
- 🎨 Responsive UI – Clean and mobile-friendly design with Bootstrap
- ⚡ Error Handling – Smooth user experience with proper error handling
- Backend: Node.js, Express.js
- Frontend: EJS + Bootstrap
- Database: MongoDB (Mongoose)
- Authentication: Passport.js
- Image Storage: Multer, Cloudinary
- Maps: Mapbox
- Architecture: MVC
Wanderlust/
├── controllers/ # Handles controller logic
├── init/ # Application initialization scripts/config
├── models/ # Mongoose schemas/models
├── public/ # Static assets
├── routes/ # Express route handlers
├── utils/ # Utility functions and middleware
├── views/ # EJS template files
├── app.js # Main server entry point
├── cloudConfig.js # Cloudinary configuration for image uploads
├── middleware.js # Custom middleware
├── schema.js # Validation schemas
├── package.json # Project dependencies & scripts
└── package-lock.json # Locked dependency versions
-
Clone the repo
git clone https://github.com/Prashasthaa/WanderLust.git cd WanderLust -
Install dependencies
npm install
-
Create a
.envfile and add the following:CLOUDINARY_CLOUD_NAME=your_cloudinary_name CLOUDINARY_KEY=your_cloudinary_key CLOUDINARY_SECRET=your_cloudinary_secret MAPBOX_TOKEN=your_mapbox_token MONGO_URI=your_mongodb_connection SESSION_SECRET=your_session_secret
-
Run the app
nodemon app.js
-
Visit:
http://localhost:3000
- Full-stack development using Node.js, Express, and MongoDB
- Image upload & storage with Multer + Cloudinary
- Secure authentication with Passport.js & password hashing
- MVC architecture for scalability
- Error handling & validation for better UX
- Mapbox integration for location-based features
Special thanks to Shradha Khapra for guidance throughout the learning journey.
- Live Demo: https://wanderlust-5zas.onrender.com/listings
- GitHub Repo: https://github.com/Prashasthaa/WanderLust