Anumifly โ Hotel Management System
Inspiration
I wanted to build a web application that makes hotel-related tasks easier through a simple, user-friendly digital experience. This project gave me an opportunity to apply my web development knowledge to a practical use case in the hospitality industry.
What It Does
Anumifly is a hotel management web project focused on improving the way users interact with hotel services. Its goal is to provide a convenient interface and organize hotel-related workflows.
How I Built It
I developed this project using the web technologies used in my repository, focusing on the user interface, application structure, and core functionality. I used Git and GitHub for version control and project management.
Challenges I Faced
During development, I worked on translating the project idea into a functional application, organizing the code, resolving implementation issues, and improving the user experience.
What I Learned
This project helped me strengthen my practical web development skills, understand application structure, improve debugging and problem-solving, and gain experience building a project from idea to implementation.
What's Next
Future improvements could include enhancing the booking workflow, improving mobile responsiveness, and adding further hotel management features based on the current implementation. Discover ยท Book ยท Manage โ All in One Place
๐ธ Preview
A premium hotel booking experience with powerful owner tools, AI features, and seamless payments
โจ Features
๐ค For Guests
- ๐ Search & Filter โ Browse rooms by city, price range, and room type
- โค๏ธ Wishlist โ Save favorite rooms for later
- โ๏ธ Compare Rooms โ Compare up to 2 rooms side-by-side
- ๐๏ธ Coupon Codes โ Apply promo codes for discounts
- ๐ณ Stripe Payments โ Secure online payments
- ๐ง Email Invoice โ Automatic PDF invoice on booking confirmation
- ๐ Booking Management โ View, track, and cancel bookings
- ๐ Dark Mode โ Full dark mode support
๐จ For Hotel Owners
- ๐ข Multi-Hotel Support โ Register and manage multiple hotels
- ๐๏ธ Room Management โ Add rooms with images, amenities, pricing
- ๐ Analytics Dashboard โ Revenue charts, occupancy rate, booking trends
- ๐ค AI Price Suggestion โ Get AI-powered competitive pricing recommendations
- โจ AI Description Generator โ Generate compelling room descriptions
- ๐ Availability Toggle โ Control room availability in real-time
- ๐ Bookings Calendar โ Visual calendar view of all bookings
๐ก๏ธ For Admins
- ๐ฅ User Management โ View, edit roles, delete users
- ๐จ Hotel Verification โ Verify/unverify hotel listings
- ๐ Booking Overview โ Monitor all platform bookings
- ๐ Platform Statistics โ Total revenue, bookings, and hotel stats
๐ ๏ธ Tech Stack
| Category | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS v4 |
| Backend | Node.js, Express.js |
| Database | MongoDB, Mongoose |
| Authentication | Clerk |
| Payments | Stripe |
| Image Hosting | Cloudinary |
| Nodemailer + Gmail | |
| PDF Generation | PDFKit (memory buffer) |
| AI | Anthropic Claude API |
| Maps | React Leaflet |
| Charts | Recharts |
| Deployment | Vercel |
๐ Getting Started
Prerequisites
- Node.js v18+
- MongoDB Atlas account
- Clerk account
- Stripe account
- Cloudinary account
- Gmail App Password
1. Clone the Repository
git clone https://github.com/introvertadnan07/Hotel-managements.git
cd Hotel-managements
2. Setup Backend
cd server
npm install
Create server/.env:
MONGODB_URI=your_mongodb_connection_string
CLERK_SECRET_KEY=your_clerk_secret_key
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
[email protected]
EMAIL_PASS=your_gmail_app_password
npm run dev
3. Setup Frontend
cd client
npm install
Create client/.env:
VITE_BACKEND_URL=http://localhost:5000
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
npm run dev
4. Open in Browser
http://localhost:5173
๐ Project Structure
Hotel-managements/
โโโ client/ # React Frontend
โ โโโ src/
โ โโโ assets/ # Images, icons
โ โโโ components/ # Reusable components
โ โ โโโ hotelOwner/ # Owner-specific components
โ โโโ context/ # AppContext (global state)
โ โโโ pages/
โ โโโ hotelOwner/ # Owner dashboard pages
โ
โโโ server/ # Express Backend
โโโ controllers/ # Business logic
โโโ middleware/ # Auth & admin middleware
โโโ models/ # Mongoose schemas
โโโ routes/ # API route definitions
โโโ utils/ # Email, PDF, Cloudinary helpers
๐ API Reference
| Method | Endpoint | Description | Auth |
|---|---|---|---|
POST |
/api/hotels |
Register hotel | Owner |
GET |
/api/hotels/owner |
Get owner's hotels | Owner |
POST |
/api/rooms |
Add room | Owner |
GET |
/api/rooms |
Get all rooms | Public |
POST |
/api/bookings/book |
Create booking | Guest |
GET |
/api/bookings/user |
Get user bookings | Guest |
GET |
/api/bookings/hotel |
Get hotel bookings | Owner |
POST |
/api/bookings/stripe-payment |
Stripe checkout | Guest |
POST |
/api/bookings/validate-coupon |
Validate coupon | Guest |
POST |
/api/wishlist/toggle |
Toggle wishlist | Guest |
GET |
/api/ai/price-suggestion/:id |
AI price suggestion | Owner |
GET |
/api/ai/generate-description/:id |
AI description | Owner |
GET |
/api/admin/stats |
Platform stats | Admin |
๐๏ธ Database Schema
User โ clerkId, email, username, role
Hotel โ name, address, city, contact, owner
Room โ hotel, roomType, category, description,
pricePerNight, baseGuests, maxGuests,
extraGuestPrice, beds, bathrooms,
amenities, images, isAvailable
Booking โ user, room, hotel, checkIn, checkOut,
totalPrice, isPaid, status, couponCode
Review โ user, room, rating, comment
Wishlist โ user, rooms[]
Coupon โ code, discountType, discountValue,
maxUsage, usedCount, expiryDate
Newsletter โ email, subscribedAt
๐ User Roles
| Role | Access |
|---|---|
| Guest | Browse, wishlist, book, review rooms |
| Hotel Owner | Register hotels, manage rooms, view analytics |
| Admin | Full platform management access |
To make yourself Admin: MongoDB Atlas โ users collection โ set
roleto"admin"
๐ Key Implementation Highlights
- Vercel-Compatible PDF โ Invoice PDFs generated in memory (no filesystem writes)
- Multi-Hotel Support โ One account can own multiple hotels
- Stripe Webhooks โ Payment confirmation handled server-side
- Dark Mode (Tailwind v4) โ Uses
@variant darksyntax throughout - AI Integration โ Claude API powers pricing and description features
- Role-Based Access โ Middleware guards protect owner and admin routes
- Cloudinary Upload โ Images streamed via buffer, no temp file storage
๐ฆ Environment Variables Summary
Server
| Variable | Description |
|---|---|
MONGODB_URI |
MongoDB Atlas connection string |
CLERK_SECRET_KEY |
Clerk backend secret |
CLOUDINARY_CLOUD_NAME |
Cloudinary cloud name |
CLOUDINARY_API_KEY |
Cloudinary API key |
CLOUDINARY_API_SECRET |
Cloudinary API secret |
STRIPE_SECRET_KEY |
Stripe secret key |
STRIPE_WEBHOOK_SECRET |
Stripe webhook signing secret |
EMAIL_USER |
Gmail address for sending emails |
EMAIL_PASS |
Gmail App Password |
Client
| Variable | Description |
|---|---|
VITE_BACKEND_URL |
Backend API URL |
VITE_CLERK_PUBLISHABLE_KEY |
Clerk publishable key |
๐ข Deployment
Backend (Vercel)
- Connect GitHub repo to Vercel
- Set Root Directory to
server - Add all environment variables
- Deploy
Frontend (Vercel)
- Connect GitHub repo to Vercel
- Set Root Directory to
client - Add
VITE_BACKEND_URLandVITE_CLERK_PUBLISHABLE_KEY - Deploy
๐ค Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐จโ๐ป Author
Md Adnan Qaisar
๐ License
This project is licensed under the MIT License โ see the LICENSE file for details.
**Built with โค๏ธ by Md Adnan Qaisar** If you found this project helpful, please give it a โญAnumiflyStay
5f03fac34f2e9cd024036c85f103cd864d077c83

Log in or sign up for Devpost to join the conversation.