Wanderlust
Feb 2024 - Mar 2024
Node.js
MongoDB
HTML
CSS
JavaScript
EJS
SQL
It might take up to 90 seconds for our server to wake up from its nap
Wanderlust is a comprehensive web application designed to streamline the discovery and listing of unique travel accommodations and experiences. It enables users to create, update, search, and delete listings, as well as review others' listings. The platform aims to connect travelers with memorable stays and experiences worldwide.
Features
User Authentication
- Secure signup and login functionality, including session management.
Listing Management
- Users can post new listings with details such as title, description, images, price, and location.
- Users can edit or delete their listings.
Image Upload
- Integration with Cloudinary for image uploading and storage.
Search Functionality
- Users can search for listings based on keywords like title, description, and location.
Reviews
- Users can leave reviews on listings, including a rating and comments.
Responsive Design
- The application is fully responsive and provides a seamless experience on both desktop and mobile devices.
Technologies Used
Frontend
- HTML
- CSS
- JavaScript
- EJS (templating engine)
Backend
- Node.js
- Express.js
Database
- MongoDB with Mongoose ODM
Authentication
- Passport.js
Image Storage
- Cloudinary
Validation
- Joi
Styling
- Bootstrap for responsive design
Code Highlights
MVC Architecture
Wanderlust is organized using the Model-View-Controller (MVC) architecture to separate concerns and enhance maintainability.
Middleware
- Custom middleware for authentication and authorization to protect routes and resources.
Error Handling
- Comprehensive error handling to provide meaningful error responses to the user.
Challenges Overcome
- Implementing full-text search across multiple fields in MongoDB.
- Managing file uploads and integrating with a third-party cloud storage solution.
- Ensuring security and robustness in user authentication and data validation.
Skills Demonstrated
- Full-stack web development
- Database design and management
- Server-side and client-side JavaScript
- API integration
- Security best practices in web development
- Responsive web design
Architectural Framework: MVC (Model-View-Controller)
Model
- Handles data and business logic. In Wanderlust, models are used for defining data schemas and interacting with the MongoDB database using Mongoose.
View
- Responsible for displaying data to the user. The application uses EJS templates to generate HTML dynamically based on the data received from the server.
Controller
- Acts as an intermediary between models and views. It processes incoming requests, manipulates data through models, and sends output to the browser by rendering views.
Using the MVC framework enhances the maintainability of the application by promoting organized and modular code. It also facilitates easier debugging and testing by segregating the application into manageable components.