
Main listings page with search bar
Overview
A full-stack Airbnb-inspired platform with authentication, cloud storage, reviews, and dynamic search — built end-to-end with Node.js and MVC architecture.
Key Features
- Dynamic Property Discovery: Browse a diverse catalog of listings with a regex-powered search engine that queries across titles, locations, and countries for instant, relevant results.
- Listing Creation & Cloud Image Uploads: Hosts can create detailed property listings and upload high-resolution photos directly to Cloudinary, with dynamic image transformations for optimized thumbnail previews.

"Create New Listing" form with image upload
- Community Reviews & Ratings: Guests can leave detailed reviews and ratings on any property. Cascading deletion hooks automatically clean up associated reviews when a listing is removed, maintaining referential integrity.

Property detail page with reviews section
- Secure Authentication & Session Management: Persistent login/signup powered by Passport.js with sessions stored securely in MongoDB via connect-mongo, ensuring reliable user state across requests.
- Multi-Level Authorization: Robust ownership & authorship verification middleware ensures users can only modify their own listings and reviews, preventing any unauthorized data manipulation.
How I Built It
- Follows the MVC (Model-View-Controller) pattern for a clean separation of concerns.
- Models: Mongoose schemas with relational references (User ↔ Listing ↔ Review) and post-delete hooks for cascading cleanup.
- Controllers: Modular route handlers for listings, reviews, and user authentication — each in its own file.
- Views: Server-rendered EJS templates with ejs-mate layouts and Bootstrap 5 for a responsive, polished UI.
- Middleware: Custom layers for authentication checks, ownership verification, redirect URL persistence, and Joi schema validation.
- Cloud Integration: Multer + Cloudinary pipeline for seamless image upload and storage.
Tech Stack
- Backend: Node.js, Express.js (v5), Mongoose ODM
- Database: MongoDB Atlas
- Authentication: Passport.js, express-session, connect-mongo
- Cloud Storage: Cloudinary, multer-storage-cloudinary
- Frontend: EJS, ejs-mate, Bootstrap 5
- Validation: Joi (client + server)
- Deployment: Vercel
Why I Built It
Wander1ust was developed as a hands-on project to master real-world backend complexities. It pushed me beyond simple CRUD apps into implementing secure session-based authentication, integrating cloud media storage pipelines, managing complex relational data in a NoSQL database, and designing multi-layered authorization logic — skills that directly translate to production-grade development.