WanderLust is a feature-rich, full-stack web application built to help travelers discover and book unique accommodations — from cozy cabins and beachside retreats to private villas and countryside farmhouses. Property owners can list their spaces directly on the platform, creating a vibrant marketplace for short-term rentals. The app offers a smooth and secure booking experience backed by real-time map views, cloud-based image storage, and robust authentication — all wrapped in a clean, responsive interface.
Tech Stack: HTML, CSS, JavaScript, Bootstrap, EJS
Highlights:
- 📱 Mobile-Responsive Layout — Adapts seamlessly across desktops, tablets, and phones
- 🧭 Intuitive Navigation — Clean UI for browsing, searching, and managing listings
- 🗺 Leaflet + OpenStreetMap — Pinpoints exact property locations on an interactive map, no paid API key required
- 🌗 Dark / Light Mode — Theme toggle with saved preference and no flash-of-wrong-theme on load
- 🏷 Category Filters — Browse listings by category (beach, farmhouse, villa, and more) with live search
- 🎨 Dynamic Views — Powered by EJS templates for modular, reusable components
Tech Stack: Node.js, Express.js
Highlights:
- 🔁 RESTful Architecture — Well-structured API endpoints for all core operations
- 🔐 Auth and Authorization — Secure user access using Passport.js with session management
- 📬 Core Endpoints — Covering property listings, user accounts, login/signup, and reviews
- 🏷 Listing Management — Full CRUD flow for creating, editing, and deleting property listings
System: MongoDB Atlas
Highlights:
- 🧱 Optimized Schema Design — Cleanly modeled collections for listings, users, and reviews
- ⚡ Efficient Queries — Fast retrieval and storage of property and user data
- ☁ Cloud-Hosted — Managed via MongoDB Atlas for reliability and scalability
All listing photos are stored and served via Cloudinary, ensuring fast load times, automatic optimization, and reliable delivery. Uploads are handled with Multer before being pushed to the cloud.
- 🔎 Smart Search and Filtering — Quickly narrow down listings by category and location
- ⭐ Ratings and Reviews — Guests can rate and review properties they have stayed at
- 🔒 Data Security — Input validation, encrypted sessions, and secure environment variables
- 🗺 Map-Based Discovery — Find properties visually using free, key-free Leaflet/OpenStreetMap maps
- 🌗 Dark/Light Mode — Toggle theme with persisted preference across sessions
- ✅ Dual-Side Validation — Both client and server validate all inputs with Joi
- 🍪 Session and Cookie Management — Persistent auth state with flash notifications
- 🏗 MVC Pattern — Organized codebase following Model-View-Controller architecture
- 📤 File Uploads — Smooth image handling via Multer middleware
Make sure you have the following installed and set up:
- 🟢 Node.js v20 or higher
- 🍃 MongoDB Atlas account
- ☁ Cloudinary account
1. Clone the repo
git clone https://github.com/NotRealShanks/WanderLust-Project.git
cd WanderLust-Project2. Install all dependencies
npm install3. Configure your environment
Create a .env file at the project root:
ATLASDB_URL=your_mongodb_atlas_connection_string
SECRET=your_session_secret_key
CLOUD_NAME=your_cloudinary_cloud_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret4. Seed sample data (optional)
node init/index.js5. Run the app
node app.js6. 🌐 Visit http://localhost:8080 in your browser 🎉
- 🍃 MongoDB + Mongoose — Database and object modeling
- 🚂 Express.js — Web framework
- 🟢 Node.js — Runtime environment
- 🔐 Passport.js + Passport-Local — User authentication
- 🧩 Passport-Local-Mongoose — Mongoose-based auth helpers
- 🗺 Leaflet.js — Interactive maps rendered on OpenStreetMap tiles, no API key
- 📍 Photon (Komoot) — Free geocoding for turning listing locations into map coordinates
- 🖼 Cloudinary — Cloud image storage
- 📤 Multer — File upload middleware
- 📄 EJS — Server-side templating
- ✅ Joi — Data validation
- 💬 Connect-Flash — Flash alert messages
- 💾 Connect-Mongo — MongoDB-backed session store
- 🔑 Express-Session — Session management
- 🍪 Cookie-Parser — Cookie parsing
- 🔒 Dotenv — Environment variable management
The application is deployed via Render, connected to MongoDB Atlas as the cloud database.
🔗 Live Demo: https://wanderlust-8p54.onrender.com/
Built with passion by @NotRealShanks
This project reflects hands-on experience across the full web development stack — from designing responsive UIs and RESTful APIs to managing databases, cloud storage, and secure authentication systems.