A full-stack web application inspired by Airbnb, built using Node.js, Express, MongoDB, and EJS.
Users can browse accommodations, create listings, leave reviews, manage accounts, and search for stays.
- Create, edit, and delete listings
- Upload images (Multer + Cloudinary)
- View detailed listing pages
- Server-side rendered UI using EJS templates
- Add reviews to listings
- Edit or delete reviews
- Validation and error handling
- User signup and login
- Session-based authentication (Passport.js)
- LocalStrategy with encrypted passwords
- Flash messages for user feedback
- Only listing owners can modify or delete their listings
- Route protection using middleware
- Search listings by title
- Basic UI filters
- MVC structure (models, views, controllers)
- Custom error class (ExpressError)
- Asynchronous wrapper (wrapAsync)
- Middleware pipelines
- MongoDB session store
- Node.js
- Express
- MongoDB
- Mongoose
- Passport.js
- express-session
- method-override
- connect-mongo
- EJS
- CSS / JavaScript
- Bootstrap (optional)
- Multer + Cloudinary
- Flash messages
- Custom middleware
- Error handling utilities
├── models
├── routes
├── views
├── public
├── utils
├── schema.js
├── app.js
└── package.json
git clone https://github.com/sidharthcodes-arch/bnbliss
cd bnblissnpm installATLASDB_URL=your_mongodb_url
SECRET=your_session_secret
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_KEY=your_key
CLOUDINARY_SECRET=your_secretnode app.jsServer runs at:
http://localhost:8080
- Designing a full-stack application using Node.js + Express
- Implementing secure authentication with Passport.js
- Modeling data and relationships using Mongoose
- Building middleware-driven backend pipelines
- Constructing server-side rendered UIs with EJS
- Handling cloud file uploads with Multer + Cloudinary
- Structuring scalable REST APIs
Built by Sidharth, a self-taught full-stack developer passionate about backend engineering, distributed systems, and scalable architecture.
Fully functional and continuously improving.




