Skip to content

nitinkumar593/Wanderlust-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

44 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WanderLust is a hotel booking web application that allows users to easily browse through various listings and reserve accommodations. It provides a clean interface for travelers to discover unique places to stay and allows hosts to list their properties for rent.

This is my first major fullstack project where I handled both the frontend and backend development. It is built as a functional clone of Airbnb and is designed with a responsive layout to ensure a seamless experience on both mobile phones and desktop computers.

⭐ If this project helped or inspired you, consider giving it a star β€” it really motivates me to keep building!


πŸš€ Live Demo

Click here to explore unique stays and start your journey! πŸ‘‰ [ 🌏 WanderLust πŸ—ΊοΈ ]

πŸ’‘ Pro Tip: Login is hassle-free! You don't need a real email IDβ€”just create a dummy account to test features like adding reviews. 😜

😎 Try this: Visit the app both as a Guest and while Logged In. The interface is smart enough to detect your status and completely adapts the User Menu and features accordingly!


πŸ€– AI-Powered Workflow

I follow an AI-assisted development approach to improve productivity and code quality.
In this project, AI was used as a collaborative pair programmer for debugging, structuring backend logic, and refining implementation details, rather than simply generating code.

πŸ› οΈ Tool πŸ’‘ How I Used It
ChatGPT Concept Generation: Used for understanding backend concepts, debugging errors, designing Express routes, and improving project structure.

πŸš€ Key Lessons from AI Collaboration

  • 🚫 "Trust but Verify": I learned when to deny AI code. AI often suggests deprecated packages or "hallucinated" variables. I manually verified every suggestion against documentation.
  • πŸ—£οΈ Prompt Engineering (Bad Input === Bad Output): I realized AI is only as smart as my instructions. Learning to write specific, context-aware prompts saved hours of debugging.
  • 🧱 Bridging the Knowledge Gap: AI helped me implement professional features I had never touched before (like Cron Jobs and Leaflet Maps) by explaining the logic, not just giving the code.

πŸ› οΈ Tech Stack

Category Technologies
🎨 Frontend HTML5 CSS3 JavaScript Bootstrap EJS
βš™οΈ Backend Node.js Express.js Passport.js Joi
πŸ’½ Database MongoDB Mongoose Cloudinary
πŸ—ΊοΈ Maps & Tools Leaflet OpenStreetMap Git VS Code

πŸš€ Key Features

Beyond the beautiful UI, WanderLust is built on a robust full-stack architecture. Here is a breakdown of the complex engineering challenges powering the application.

Category Feature Technical Implementation
🧠 Core Logic Full MVC Architecture Built with a scalable Model-View-Controller pattern to keep code clean and modular.
πŸ” Security Authentication & AuthZ Secure login using Passport.js (Salt/Hash) πŸ›‘οΈ + Middleware for strict route protection.
πŸ§ͺ Data Automated DB Seeding One-command database regeneration with realistic demo data and ownership-safe review logic.
πŸ—ΊοΈ UX/UI Interactive Maps Integrated Leaflet APIs for dynamic location pinning and geocoding πŸ“.
πŸ“± Mobile Touch-Optimized UI Custom "Double-Tap" logic πŸ‘† to handle complex animations smoothly on touch devices.
☁️ Data Cloud Image Storage Optimized image uploading and storage handling using Cloudinary πŸ“Έ.
🚧 Safety Server-Side Validation robust data validation with Joi to prevent injection attacks and ensure data integrity.
πŸ’¬ Feedback Flash Messages Real-time success/error notifications using Express-Flash for better user guidance ✨.

πŸ“‚ Project Structure

WanderLust follows a strict MVC (Model-View-Controller) architecture to ensure scalability and code maintainability.

airbnbproject/
β”‚
β”œβ”€β”€ models/
β”œβ”€β”€ routes/
β”œβ”€β”€ controllers/
β”œβ”€β”€ views/
β”œβ”€β”€ public/
β”œβ”€β”€ utils/
β”œβ”€β”€ init/
β”œβ”€β”€ app.js
└── package.json

## 🧠 Learning Outcomes

Building WanderLust transformed my theoretical knowledge into production-grade engineering skills.

πŸŽ“ Domain πŸš€ Key Takeaways & Skills Mastered
πŸ—οΈ Architecture Mastered the MVC (Model-View-Controller) pattern, decoupling logic to ensure the codebase is scalable and maintainable.
πŸ’½ Database Engineering Designed complex One-to-Many relationships in MongoDB (connecting Users ↔ Listings ↔ Reviews) and handled cascading deletes.
πŸ€– AI-Pair Programming Leveraged Generative AI for architectural planning, debugging complex logic errors, and optimizing documentation workflows (Prompt Engineering).
πŸ”’ Security Implemented robust security measures including Session-based Authentication (Passport.js), Joi Validation, and Environment Variable protection.
⚑ Performance Ops Solved the "Cold Start" problem on Render by implementing Cron Jobs to keep the server active and responsive.
🌐 API Integration Replaced paid mapping services with Open-Source alternatives (Leaflet + Nominatim), mastering asynchronous data handling.

πŸͺ„ Installation & Setup

Want to run this project locally? Follow these simple steps.

1. Clone the repository

git clone  https://github.com/nitinkumar593/Wanderlust-Project
cd WanderLust

2. Install Dependencies

npm install

3. Configure Environment Variables
Create a .env file in the root directory and add the following keys:

CLOUD_NAME=your_cloudinary_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret
ATLASDB_URL=your_mongodb_connection_string
MY_SECRET=your_session_secret

4. Start the Application

node app.js

5. Visit the app

http://localhost:8080

6. Database Regeneration
This project uses one shared password for all seeded demo users (defined via environment variables). Add this to your .env file:

SEED_USER_PASSWORD=your_strong_dev_password

Then regenerate the database with demo users, listings, images, and reviews:

node init/init.js

⚠️ This command clears existing data and is intended for local development only.


πŸš€ Deployment

WanderLust is production-ready and deployed using modern cloud infrastructure.

Service Role
Render Full-stack hosting with CI/CD integration for automated deployments.
MongoDB Atlas Managed Cloud Database ensuring high availability and data persistence πŸ’½.
Cloudinary Content Delivery Network (CDN) for optimized image storage and serving ⚑.
Cron-job.org Automated "Keep-Alive" pings to prevent server sleep and eliminate cold-start latency ⚑.

⚑ Performance Note: I configured an external Cron Job to ping the server every 14 minutes. This prevents the Render free-tier from "sleeping," ensuring instant load times for all users.


---

Made with πŸ’– by Nitin kumar


About

WanderLust is a full-stack Airbnb-inspired web app for discovering, listing, and booking unique stays with authentication, reviews, and map integration.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors