A scalable, production-ready MERN stack application featuring secure authentication, property management, and an integrated AI Smart Travel Assistant.
Wonderlust goes beyond a traditional hotel booking site by integrating a Smart AI Travel Assistant. Users can explore, manage hotel listings, and seamlessly generate personalized travel itineraries using Google Gemini AI.
Built with modern web development practices, it showcases a robust backend architecture, RESTful API design, secure authentication, and a responsive frontend. This project is designed to be recruiter-friendly, highlighting clean code organization and real-world application workflows.
- Personalized Itineraries: Generate day-wise trip plans powered by Google Gemini AI.
- Budget-Aware & Type-Specific: Get recommendations tailored to your budget and travel style.
- Local Insights: Discover nearby attractions, local food recommendations, and travel tips.
- Export & Share: Download itineraries as PDFs or copy them to the clipboard effortlessly.
- Beautiful Responsive UI: Built to give a smooth AI conversation experience.
- Property Management: Full CRUD operations for listings (Create, Edit, Delete).
- Interactive Maps: Real-time location integration using Mapbox API.
- Cloud Storage: Optimized image uploading and management via Cloudinary.
- Smart Filtering: Destination search and category-based dynamic filtering.
- Secure Access: Session-based authentication using Passport.js.
- Data Protection: Secure password hashing and route authorization.
- Validation: Robust server-side input validation using Joi.
- Review System: Users can leave ratings and reviews on properties.
- Authorization: Only authorized users can edit their listings or delete their reviews.
Follow these steps to run the project locally.
- Node.js (v18 or higher)
- MongoDB (Local or Atlas)
- Cloudinary Account
- Mapbox Account
- Google Gemini API Key
-
Clone the repository:
git clone https://github.com/Shweta-rani05/wonderlust-mern.git cd wonderlust-mern -
Install dependencies:
npm install
-
Set up Environment Variables: Create a
.envfile in the root directory and add your credentials:ATLASDB_URL=<your-mongodb-connection-string> SECRET=<your-session-secret> CLOUDINARY_CLOUD_NAME=<your-cloudinary-cloud-name> CLOUDINARY_KEY=<your-cloudinary-api-key> CLOUDINARY_SECRET=<your-cloudinary-api-secret> MAP_TOKEN=<your-mapbox-api-key> GEMINI_API_KEY=<your-google-gemini-api-key>
-
Run the application:
# Development mode (with nodemon) npm run dev # Or standard execution npm start
-
Access the app: Open http://localhost:8080 in your browser.
The application follows the MVC (Model-View-Controller) pattern to ensure clean separation of concerns:
- Models: Mongoose schemas defining MongoDB collections.
- Views: EJS templates for dynamic frontend rendering.
- Controllers: Business logic handling data flow between Models and Views.
- Routes: RESTful endpoints logically grouped by feature.
- Middlewares: Reusable logic for authentication, validation, and error handling.
- Services: Dedicated modules for external API integrations (e.g., Gemini AI).
- Fully-functional Booking & Payment Gateway (Stripe/Razorpay)
- Date Availability Calendar
- User Wishlists
- Real-time Email & In-App Notifications
Shweta Rani
- B.Tech Computer Science Engineering
- GitHub: @Shweta-rani05
If you found this project helpful or interesting, please consider giving it a ⭐ on GitHub!