This is a full-stack Booking Management System, inspired by Airbnb. It allows users to list, browse, and book rental properties with secure authentication, booking management, messaging, and notifications.
The project is a web-based platform enabling seamless interaction between two roles: Guests and Hosts. Guests can search for listings, filter by availability and location, and make bookings. Hosts can create listings and manage booking requests. The system includes a chat interface, notification system, and admin-controlled access, ensuring a responsive and intuitive experience.
- 🔐 Authentication via Firebase Google OAuth
- 🏠 Listings System with image upload
- 📅 Bookings with availability conflict prevention
- ✅ Booking Request Approval by hosts
- 💬 Messaging System (Guest ↔ Host post-booking)
- 🔔 Notifications for all user actions
- 🌙 Dark mode UI (Bootstrap-based)
- 🎨 Responsive Design (mobile, tablet, desktop)
Layer | Technology |
---|---|
Frontend | React.js (Vite), Bootstrap |
Backend | Node.js, Express.js |
Authentication | Firebase Authentication (Google OAuth) |
Database | PostgreSQL |
File Upload | Multer |
Styling | Bootstrap, CSS |
- Guest: Can book properties, chat with hosts, view bookings
- Host: Can create listings, approve/reject bookings, chat with guests
- User Authentication & Role Management
- Listings CRUD
- Booking Request System
- Approval/Rejection Workflow
- Messaging per Booking
- Notification Center with real-time status
- Error handling & form validation
├── client/ # Frontend (React)
│ ├── components/
│ ├── pages/
│ └── ...
├── server/ # Backend (Node.js + Express)
│ ├── routes/
│ ├── controllers/
│ └── models/
├── uploads/ # Image storage
├── README.md
└── ...
- Manual UI Testing for each role
- Postman-tested backend endpoints
- Booking conflicts, date validation, auth-protected routes
- Auto-refresh for notification center
- Ratings & Reviews
- Map-based property search
- Calendar integration (Google Calendar)
- Payment gateway
- Mobile App (React Native / Flutter)
Developed by:
Tarun Chauhan