Wanderlust is a full stack web application inspired by Airbnb where users can explore, create, edit, and manage property listings from around the world.
The project was built to strengthen my understanding of backend architecture, authentication systems, database relationships, RESTful routing, deployment workflows, and real-world application structure.
- Node.js
- Express.js
Built using MVC architecture with RESTful routing principles.
- MongoDB
- Mongoose
Used for NoSQL data storage, schema modeling, and validation.
- EJS
- EJS-Mate
Server-side rendering with reusable layouts and dynamic views.
- Passport.js
- Express-Session
- connect-mongo
Implemented local authentication strategy with persistent and encrypted session storage inside MongoDB.
Features include:
- User signup
- Login / Logout
- Session persistence
- Authorization middleware
- Multer
- Cloudinary API
Supports image uploads for listings with cloud storage and image transformation capabilities.
- Joi
- connect-flash
- method-override
- dotenv
Used for:
- Server-side schema validation
- Flash notifications
- RESTful PUT/DELETE support through forms
- Secure environment variable management
Converts location names into geographical coordinates for map rendering.
Displays interactive maps on listing detail pages.
Handles cloud-based image upload, storage, optimization, and transformation.
Cloud-hosted MongoDB database used for application data and session storage.
- Full CRUD operations for listings
- Authentication and role-based authorization
- Only listing owners can edit or delete their listings
- Review system with author-specific deletion permissions
- Cloud image upload and management
- Interactive geocoded maps for listings
- Flash messaging system for user feedback
- Global error handling
- Custom 404 error page
- Persistent sessions across server restarts
This project helped me understand:
- How frontend and backend connect in a real-world application
- RESTful routing and MVC architecture
- Authentication and authorization flows
- Deployment debugging and production issues
- Database relationships and schema design
- Building scalable backend structure
Most importantly, it taught me consistency, debugging patience, and how to keep building even when things repeatedly fail.
Completed and deployed successfully.