A full-stack MERN hotel booking system featuring a premium guest experience, manual payment verification, admin dashboard, PDF/email receipts, SEO, and PWA support.
- Website: fatwavesurfresort.com
- Frontend: Hosted on Vercel
- Backend API: Hosted on Render
- React 18 + Vite
- Tailwind CSS - Custom ocean/sand palette
- Zustand - State management
- React Router - Routing
- jsPDF + html2canvas - PDF receipts
- Sonner - Toast notifications
- Node.js + Express - REST API
- MongoDB + Mongoose - Database
- Nodemailer - Email service with PDF attachments
- Browse rooms with beautiful imagery
- Real-time availability checking
- Interactive calendar date picker
- Flexible guest count
- Secure booking with verification code
- Downloadable PDF receipts
- Email confirmation with receipt attachment
- Secure authentication
- Dashboard with booking analytics
- Room management (CRUD)
- Booking management & manual payment verification
Fatwave Surf Resort/
├── backend/
│ ├── config/ # Database & constants
│ ├── controllers/ # Route handlers
│ ├── middleware/ # Auth & validation
│ ├── models/ # Mongoose schemas
│ ├── routes/ # API endpoints
│ ├── services/ # Email & PDF
│ ├── utils/ # Helpers
│ └── server.js
│
├── frontend/
│ ├── public/ # Static assets, logo, SEO files
│ └── src/
│ ├── components/ # UI components & Receipt
│ ├── lib/ # PDF generator, utilities
│ ├── pages/ # Route pages
│ ├── services/ # API service layer
│ └── store/ # Zustand stores
│
├── README.md
└── DEPLOYMENT.md
- Node.js v18+
- MongoDB (local or Atlas)
- npm or yarn
git clone https://github.com/yourusername/fatwave-surf-resort.git
cd Fatwave Surf Resort
# Backend
cd backend && npm install
# Frontend
cd ../frontend && npm installBackend (backend/.env):
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your@email.com
EMAIL_PASS=yourpassword
EMAIL_FROM="Fatwave Surf Resort" <noreply@fatwavesurfresort.com>
MONGO_URI=mongodb://localhost:27017/fatwaveFrontend (frontend/.env):
VITE_API_URL=http://localhost:5000/api# Terminal 1 - Backend (port 5000)
cd backend && npm run dev
# Terminal 2 - Frontend (port 5173)
cd frontend && npm run dev| Method | Endpoint | Description |
|---|---|---|
| GET | /api/rooms |
List available rooms |
| GET | /api/rooms/:id |
Get room details |
| POST | /api/bookings |
Create booking |
| POST | /api/bookings/confirm |
Confirm with code |
| POST | /api/bookings/send-receipt |
Email receipt |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/admin/login |
Admin login |
| GET | /api/admin/dashboard |
Dashboard stats |
| GET | /api/admin/rooms |
List all rooms |
| POST | /api/admin/rooms |
Create room |
| PUT | /api/admin/rooms/:id |
Update room |
| DELETE | /api/admin/rooms/:id |
Delete room |
| GET | /api/admin/bookings |
List bookings |
| PATCH | /api/admin/bookings/:id/confirm |
Confirm booking |
- Browse Rooms → Guest explores available accommodations
- Select Dates → Calendar picker with availability check
- Enter Details → Guest information form
- Create Booking → System generates verification code
- Admin Verification → Code sent via email
- Confirm Booking → Guest enters code
- Receive Receipt → PDF generated & emailed
- Optimized meta tags & Open Graph
- JSON-LD structured data (Schema.org)
- Sitemap & robots.txt
- PWA manifest
- Responsive images
- Website: fatwavesurf.com
- Email: reservations@fatwavesurf.com
- Location: La Union, Philippines
MIT
Built with ❤️ by RabbitDaCoder
