How zainshah3464/zain-serenity works
Zain’s Serenity is a resort booking and administration application. Guests discover rooms, check date availability, register or sign in, place bookings, track reservations, and use reviews, gallery, and contact features. The API routes own the domain operations: booking creation validates input and availability before persisting, while room listing combines room, booking, and review data. Admin routes support booking decisions and management, plus revenue, occupancy, and availability reporting. MongoDB models provide persistence; email and image hosting are external integrations. The excerpts show several route implementations; other feature links reflect README capabilities and are not claims of inspected component wiring.
Main entry points: dashboard/route.ts Dashboard reporting · bookings/route.ts Booking API · Booking.ts Booking records · rooms/route.ts Room catalog API
Components 34
Guest experience
- Room discovery
src/app/rooms/page.tsx - Room detail
src/app/rooms/[id]/page.tsx - Booking flow
src/app/booking/BookingContent.tsx - Account access
src/app/register/page.tsx - My bookings
src/app/my-bookings/page.tsx - Reviews and contact
API and domain
- Room catalog API
src/app/api/rooms/route.ts - Booking API
src/app/api/bookings/route.ts - Reviews API
src/app/api/reviews/route.ts - Authentication
src/app/api/auth/[...nextauth]/route.ts - Registration
src/app/api/auth/register/route.ts - Contact API
src/app/api/contact/route.ts - Availability checks
src/lib/checkAvailability.ts - Booking validation
src/lib/bookingValidation.ts - Email templates
src/lib/emailTemplates.ts
Persistence
- Room records
src/models/Room.ts - Booking records
src/models/Booking.ts - User records
src/models/User.ts - Review records
src/models/Review.ts - Gallery records
src/models/GalleryImage.ts
Admin operations
- Admin dashboard
src/components/admin/AdminDashboard.tsx - Booking management
src/app/admin/(private)/bookings/page.tsx - Room management
src/app/admin/(private)/rooms/page.tsx - Gallery management
src/app/admin/(private)/gallery/page.tsx - User management
src/app/admin/(private)/users/page.tsx - Dashboard reporting
src/app/api/admin/dashboard/route.ts - Booking decisions
src/app/api/admin/bookings/[id]/route.ts - Gallery API
src/app/api/admin/gallery/route.ts - Room management API
src/app/api/admin/rooms/route.ts - User management API
src/app/api/admin/users/route.ts
Other components
- Guest
- MongoDB
- Cloudinary
- Email service
Connections 40
- Guest → Room discovery: browses
- Guest → Account access: registers
- Guest → Reviews and contact: engages
- Room discovery → Room catalog API: requests rooms
- Room detail → Booking flow: starts booking
- Booking flow → Booking API: submits reservation
- Booking API → Booking validation: validates input
- Booking API → Availability checks: checks dates
- Booking API → Booking records: creates and reads
- Room catalog API → Room records: reads rooms
- Room catalog API → Booking records: filters dates
- Room catalog API → Review records: calculates ratings
- My bookings → Booking API: loads reservations
- Reviews and contact → Reviews API: submits review
- Reviews API → Review records: checks and creates
- Reviews and contact → Contact API: sends inquiry
- Account access → Registration: creates account
- Registration → User records: creates user
- Authentication → User records: authenticates user
- Registration → Email templates: formats verification
- Contact API → Email templates: formats inquiry
- Admin dashboard → Dashboard reporting: requests metrics
- Booking management → Booking decisions: updates status
- Room management → Room management API: manages rooms
- Gallery management → Gallery API: manages images
- User management → User management API: manages users
- Dashboard reporting → Booking records: queries bookings
- Dashboard reporting → Room records: queries rooms
- Dashboard reporting → User records: queries users
- Dashboard reporting → Review records: queries reviews
- Booking decisions → Booking records: updates booking
- Booking decisions → Email templates: formats notice
- Gallery API → Cloudinary: uploads image
- Gallery API → Gallery records: stores metadata
- Email templates → Email service: email content
- Room records → MongoDB: persists records
- Booking records → MongoDB: persists records
- User records → MongoDB: persists records
- Review records → MongoDB: persists records
- Gallery records → MongoDB: persists records