A full-stack web application inspired by Airbnb, built with Node.js, Express, MongoDB, and EJS. WanderLust allows users to explore, list, and review accommodations around the world.
- Features
- Tech Stack
- Screenshots
- Installation
- Usage
- API Endpoints
- Project Structure
- Contributing
- License
- Author
- Browse Listings: Explore accommodations with beautiful image galleries
- Category Filtering: Filter by categories like Trending, Rooms, Mountains, etc.
- Detailed Views: View comprehensive property information
- Add New Listings: Property owners can list their accommodations
- Edit/Delete: Full CRUD operations for property owners
- Image Upload: Cloudinary integration for high-quality images
- Secure Registration & Login: User authentication with Passport.js
- Session Management: Persistent login sessions
- Protected Routes: Authorization middleware
- User Profiles: Personalized user experience
- 5-Star Rating System: Interactive star rating interface
- Review Comments: Detailed user reviews
- Review Management: Users can manage their reviews
- Review Count Display: Shows total reviews per listing
- Responsive Design: Mobile-first approach with Bootstrap 5
- Interactive Elements: Smooth animations and hover effects
- Category Badges: Visual indicators on property images
- Flash Messages: User feedback system
- Clean Interface: Professional and intuitive design
- Form Validation: Client and server-side validation with Joi
- Error Handling: Comprehensive error management
- Security: Input sanitization and XSS protection
- Performance: Optimized images and efficient queries
- Node.js - JavaScript runtime environment
- Express.js - Fast web application framework
- MongoDB - NoSQL database for flexible data storage
- Mongoose - MongoDB object modeling for Node.js
- EJS - Embedded JavaScript templating engine
- Bootstrap 5 - Responsive CSS framework
- Font Awesome - Icon library
- Custom CSS - Additional styling and animations
- Passport.js - Authentication middleware
- bcrypt - Password hashing
- express-session - Session management
- Joi - Data validation schema
- Multer - File upload middleware
- Cloudinary - Cloud-based image storage and optimization
- method-override - HTTP method override
- connect-flash - Flash message middleware
- dotenv - Environment variable management
Make sure you have the following installed:
- Node.js (v14 or higher)
- MongoDB (local installation or MongoDB Atlas)
- Git
git clone https://github.com/aashutosh585/WanderLust.git
cd WanderLust
npm install
Create a .env
file in the root directory and add:
CLOUD_NAME=your_cloudinary_cloud_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret
ATLASDB_URL=your_mongodb_connection_string
SECRET=your_session_secret_key
Initialize the database with sample data (optional):
node init/index.js
npm start
The application will be available at http://localhost:8080
- Explore Listings: Browse available accommodations on the homepage
- Filter by Category: Use category filters to find specific types of properties
- View Details: Click on any listing to see detailed information
- Read Reviews: Check ratings and reviews from other travelers
- Leave Reviews: Rate and review properties after your stay
- Sign Up/Login: Create an account to list your property
- Add Listing: Click "Airbnb your home" to create a new listing
- Upload Images: Add high-quality photos of your property
- Manage Listings: Edit or delete your property listings
- Monitor Reviews: Track guest feedback and ratings
GET /listings - Get all listings
GET /listings/new - New listing form
POST /listings - Create new listing
GET /listings/:id - Get specific listing
GET /listings/:id/edit - Edit listing form
PUT /listings/:id - Update listing
DELETE /listings/:id - Delete listing
POST /listings/:id/reviews - Add review
DELETE /listings/:id/reviews/:reviewId - Delete review
GET /signup - Registration form
POST /signup - Register user
GET /login - Login form
POST /login - Authenticate user
GET /logout - Logout user
WanderLust/
โโโ controllers/ # Route controllers
โ โโโ listings.js # Listing operations
โ โโโ reviews.js # Review operations
โ โโโ users.js # User authentication
โโโ models/ # Database 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
โ โโโ includes/ # Partial templates
โ โโโ layouts/ # Layout templates
โ โโโ listings/ # Listing views
โ โโโ users/ # User views
โโโ public/ # Static files
โ โโโ css/ # Stylesheets
โ โโโ js/ # Client-side JavaScript
โโโ utils/ # Utility functions
โโโ init/ # Database initialization
โโโ app.js # Main application file
โโโ cloudConfig.js # Cloudinary configuration
โโโ middleware.js # Custom middleware
โโโ schema.js # Joi validation schemas
WanderLust features various accommodation categories:
- ๐ฅ Trending - Popular destinations
- ๐๏ธ Rooms - Private rooms
- ๐๏ธ Iconic Cities - Urban accommodations
- ๐ฅพ Hiking - Adventure locations
- โฐ๏ธ Mountains - Mountain retreats
- ๐ฐ Castles - Historic properties
- ๐ Amazing Pools - Properties with pools
- ๐๏ธ Camping - Outdoor experiences
- ๐ Farms - Rural getaways
- ๐ธ Domes - Unique architecture
- โต Boats - Waterfront stays
- Password Hashing: Secure password storage with bcrypt
- Session Security: Secure session management
- Input Validation: Joi schema validation
- XSS Protection: Input sanitization
- Authorization: Route protection middleware
- File Upload Security: Cloudinary integration
Fully responsive design that works on:
- ๐ป Desktop (1200px+)
- ๐ป Laptop (992px-1199px)
- ๐ฑ Tablet (768px-991px)
- ๐ฑ Mobile (320px-767px)
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - 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 MIT License - see the LICENSE file for details.
Ashutosh Maurya
- GitHub: @aashutosh585
- LinkedIn: Connect with me
- Portfolio: View my work
- Email: your.email@example.com
- Airbnb - For the design inspiration
- Bootstrap - For the responsive framework
- Font Awesome - For the beautiful icons
- Cloudinary - For image storage and optimization
- MongoDB Atlas - For database hosting
- Render - For seamless deployment
- โญ Stars: Show your support by starring this repository
- ๐ด Forks: Feel free to fork and contribute
- ๐ Issues: Report bugs or request features
- ๐ License: MIT License
- Advanced search and filtering
- Booking system integration
- Payment gateway integration
- Real-time chat system
- Mobile app development
- Multi-language support
If you found this project helpful, please give it a โญ star!
๐ Live Demo | ๐ Documentation
Made with โค๏ธ by Ashutosh Maurya