EchoNest is a fully responsive and modern hotel booking platform designed to provide users with a seamless and engaging experience for discovering, booking, and sharing their accommodation experiences. This project delivers an attractive user interface, robust functionalities, and secure authentication.
- π Live Website: https://my-assignment-project-2a864.web.app/
- π» Client Repository: https://github.com/taanzzz/My-Booking-Project
- π§ Server Repository: https://github.com/taanzzz/hotelDB-server
- π Dynamic Slider Banner with engaging text and CTA
- π Featured Rooms (Top 6) with images and quick access to details
- πΊοΈ Hotel Location Map with
react-leafletfor real-time location view - π¬ User Reviews Carousel on homepage
- π Special Offers Modal with random promotional deals
- π± Fully Responsive across all devices
- β Extra Custom Sections for enhanced user engagement
Role-Based Access Control (User & Admin).
- π Statistics Overview: View total revenue, users, rooms, and bookings at a glance.
- π₯ User Management: View all users, change user roles (make admin), and delete users.
- π¨ Room Management: Add, view, update, and delete hotel rooms through a dedicated interface.
- π¨ Modern Personalized Layout with user avatar and details.
- π Personal Statistics: View total bookings, total amount spent, and reviews given.
- π Spending Chart: A visual breakdown of spending by room type.
- π Achievement Badges for user milestones.
- π My Bookings Page Integration: Central place to manage bookings.
- π€ My Profile Page with an option to update user information via a modal.
- πΌοΈ Image Gallery Page for exploring hotel visuals
- ποΈ Category Filtering: Hotel, Rooms, Events
- π§ Carousel View powered by
Swiper.js - π Fullscreen Lightbox with navigation controls
- π« Smooth Transitions via
framer-motion
- π Email/Password Auth via Firebase
- π JWT Integration for secure private route access
- π Google Social Login
- β Password Validation Rules
- π Success Toast Notifications using
react-toastify
- ποΈ Room Listings Page with card/table views
- πΈ Server-Side Price Filter
- π§Ύ Room Details Page with images, description, reviews
- ποΈ Booking Modal with room summary & date picker
- π« Prevent Overbooking by checking existing reservations
- π My Bookings Page (private route)
- β Cancel Booking (at least 1 day prior)
- π Date Update for existing bookings
- β Booking Confirmation Page with summary, print option & robust error handling
- βοΈ Authenticated Users Can Post Reviews
- β Rating + Comments format with timestamps
- π Review Display on Room Details Page
- π§ Custom 404 Page with Lottie animation
- π Global Animations using
framer-motionfor UX polish
- β Node.js (v16+)
- β MongoDB (local or MongoDB Atlas)
- β npm
# Clone the Client Repository
git clone https://github.com/taanzzz/My-Booking-Project
# Clone the Server Repository
git clone https://github.com/taanzzz/hotelDB-servercd hotelDB-server
npm installcd ../My-Booking-Project
npm install
npm run devGenerates JWT token for authenticated user.
Request:
{
"email": "user@example.com"
}Response:
{
"token": "your_jwt_token_here"
}Returns all rooms. Optional filters:
minPricemaxPrice
Returns top 6 rated rooms.
Returns details of a specific room.
Creates a booking. JWT required.
Request:
{
"roomId": "room_id_here",
"email": "user@example.com",
"date": "YYYY-MM-DD"
}Get all bookings for logged-in user.
Get specific booking by ID.
Returns all booked dates for a room.
Checks if a user already booked a room.
Returns booking for a room on a date.
Get all bookings by user email.
Cancel a booking (JWT & user match required).
Update a booking date. JWT required.
Request:
{
"roomId": "room_id_here",
"date": "YYYY-MM-DD"
}Submit review for booked room (JWT required).
Request:
{
"roomId": "room_id_here",
"username": "Reviewer Name",
"userEmail": "reviewer@example.com",
"userPhoto": "url_to_photo",
"rating": 5,
"comment": "Great room and service!"
}Get all reviews.
Get reviews for a specific room.
- React + Vite
- Tailwind CSS + DaisyUI
- React Router
- Framer Motion
- Axios
- Firebase Auth
- React Icons
- React-Leaflet
- Swiper.js
- React-Toastify
- React Datepicker
- Node.js + Express.js
- MongoDB (Native Driver)
- JWT Auth
- Dotenv, CORS
Create a .env file in /hotelDB-server:
PORT=3000
MONGODB_URI=your_mongodb_uri_here
JWT_SECRET=your_secure_jwt_secret
NODE_ENV=developmentπ Thatβs it! Your full-stack hotel booking platform is ready to go. Happy coding!
