“Learning by doing” – This project is a testament to my journey into backend development, where curiosity met code.
This is a backend-focused mini project inspired by Airbnb, crafted to solidify my understanding of server-side development. It encompasses:
- RESTful API development
- EJS templating
- Form validation
- MongoDB integration with Mongoose
- Error handling mechanisms
- User authentication & authorization ✅
- Flash messaging for user feedback
- Session management
- Review system with ownership checks
- Bootstrap-powered responsive UI
- Clean code practices and modular structure
- Node.js – JavaScript runtime
- Express.js – Web framework
- MongoDB – NoSQL database
- Mongoose – ODM for MongoDB
- EJS – Templating engine
- HTML/CSS – Frontend structure and styling
- Bootstrap – Responsive design
- Passport.js – Authentication
- connect-flash – Flash messages
- Git & GitHub – Version control and collaboration
API_Pratice_Backend-Airbnb/
├── models/ # Mongoose schemas
├── public/ # Static assets (CSS, images)
│ └── css/
├── views/ # EJS templates
├── routes/ # Express route handlers
├── middleware.js # Custom middleware (auth, validation, etc.)
├── utils/ # Utility functions and error classes
├── app.js # Main application file
├── package.json # Project metadata and dependencies
├── README.md # Project documentation
└── docs/
└── AUTH_README.md # Authentication & Authorization GuideThrough this project, I have:
- Grasped the fundamentals of Express.js and middleware
- Implemented Mongoose models and connected to MongoDB
- Designed and validated forms using EJS templates
- Handled errors gracefully to enhance user experience
- Structured a project following best practices
- Implemented user authentication and authorization using Passport.js
- Used locals to pass user data to templates
- Populated referenced fields (like author) to display usernames
- Ensured only owners can edit/delete their listings or reviews
Images to be added soon.
- Implement JWT-based authentication
- Redesign with a modern, responsive UI
- Add CRUD operations for listings
- Integrate search and filter functionalities
- Deploy the application on platforms like Heroku or Vercel
I'm always eager to learn and collaborate. Feel free to reach out:
- GitHub: @Shubh6665
Keep coding, keep growing! 🌱