A full-stack travel and accommodation booking platform
WanderLust is a modern web application that allows users to discover, list, and book unique accommodations around the world. Built with the MEN stack (MongoDB, Express.js, Node.js) and EJS templating.
Visit: https://wanderlust-3-lc3j.onrender.com/
- ๐ Browse and search accommodation listings
- ๐บ๏ธ Interactive map integration for location viewing
- ๐ View detailed property information with images
- ๐ฌ Read and write reviews for properties
- ๐ณ Secure payment integration with Razorpay (Test Mode)
- ๐ฑ Responsive design for all devices
- ๐ค User authentication and profile management
- ๐ Create and manage property listings
- ๐ธ Upload multiple images for properties
- โ๏ธ Edit and delete your listings
- ๐ Track bookings and manage reservations
- ๐ฐ Receive payments securely
- ๐ Secure authentication with Passport.js
- ๐๏ธ MongoDB database with Mongoose ODM
- โ๏ธ Image storage with Cloudinary
- ๐ก๏ธ Input validation and sanitization
- ๐จ Error handling and flash messages
- ๐ Location validation and mapping
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - ODM for MongoDB
- EJS - Templating engine
- Bootstrap - CSS framework
- JavaScript - Client-side scripting
- Passport.js - Authentication middleware
- Express Session - Session management
- Connect Flash - Flash messages
- Joi - Schema validation
- Razorpay - Payment gateway integration
- Cloudinary - Image upload and storage
- Multer - File upload middleware
Before you begin, ensure you have the following installed:
- Node.js (v14 or higher)
- MongoDB (local or Atlas account)
- npm or yarn
git clone https://github.com/manoharsingh2402/WanderLust.git
cd WanderLustnpm installCreate a .env file in the root directory:
# Database
ATLASDB_URL=your_mongodb_connection_string
# Cloudinary (for image uploads)
CLOUD_NAME=your_cloudinary_cloud_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret
# Razorpay (for payments)
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
# Session Secret
SECRET=your_session_secret_key
# Optional: Map API
MAP_TOKEN=your_mapbox_tokenDevelopment mode:
npm startProduction mode:
NODE_ENV=production npm startThe app will be running at http://localhost:8080
WanderLust/
โโโ models/ # Mongoose models
โ โโโ listing.js # Listing schema
โ โโโ review.js # Review schema
โ โโโ user.js # User schema
โโโ routes/ # Express routes
โ โโโ listing.js # Listing routes
โ โโโ review.js # Review routes
โ โโโ user.js # User routes
โโโ views/ # EJS templates
โ โโโ listings/ # Listing views
โ โโโ users/ # User views
โ โโโ layouts/ # Layout templates
โโโ public/ # Static files
โ โโโ css/ # Stylesheets
โ โโโ js/ # Client-side scripts
โโโ middleware.js # Custom middleware
โโโ schema.js # Joi validation schemas
โโโ cloudConfig.js # Cloudinary configuration
โโโ razorpayConfig.js # Razorpay configuration
โโโ app.js # Main application file
โโโ package.json # Dependencies
| Variable | Description | Required |
|---|---|---|
ATLASDB_URL |
MongoDB connection string | Yes |
CLOUD_NAME |
Cloudinary cloud name | Yes |
CLOUD_API_KEY |
Cloudinary API key | Yes |
CLOUD_API_SECRET |
Cloudinary API secret | Yes |
RAZORPAY_KEY_ID |
Razorpay test/live key ID | Yes |
RAZORPAY_KEY_SECRET |
Razorpay secret key | Yes |
SECRET |
Session secret for security | Yes |
MAP_TOKEN |
Mapbox access token (optional) | No |
WanderLust uses Razorpay for secure payment processing.
Credit/Debit Card:
- Card Number:
4111 1111 1111 1111 - CVV: Any 3 digits (e.g.,
123) - Expiry: Any future date (e.g.,
12/25)
UPI:
- UPI ID:
success@razorpay(for successful payment) - UPI ID:
failure@razorpay(for failed payment)
OTP: Any 6-digit number in test mode
Coming soon...
GET /listings- View all listingsGET /listings/new- Show create listing formPOST /listings- Create new listingGET /listings/:id- View single listingGET /listings/:id/edit- Show edit formPUT /listings/:id- Update listingDELETE /listings/:id- Delete listing
POST /listings/:id/reviews- Add reviewDELETE /listings/:id/reviews/:reviewId- Delete review
GET /signup- Signup formPOST /signup- Register userGET /login- Login formPOST /login- Login userGET /logout- Logout user
POST /payment/create-order- Create Razorpay orderPOST /payment/verify-payment- Verify payment signature
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/AmazingFeature) - Make your changes
- Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
Manohar Singh
- GitHub: @manoharsingh2402
- Project Link: https://github.com/manoharsingh2402/WanderLust
- Inspired by Airbnb
- Icons from Font Awesome
- Images from Unsplash
- Maps powered by Mapbox
- None currently reported
For any queries or suggestions, feel free to reach out or open an issue on GitHub.
โญ If you like this project, please give it a star!