A full-stack MERN reservation system featuring a premium booking experience with manual payment verification, admin dashboard, PDF receipt generation, email confirmations, and live chat support.
- Website: amanpuloresort.com
- Frontend: Hosted on Vercel
- Backend API: Hosted on Render
- React 19 + Vite - Modern build tooling
- Tailwind CSS - Custom sand/gold luxury palette
- Zustand - Lightweight state management
- React Router v7 - Client-side routing
- Radix UI - Accessible UI primitives
- jsPDF + html2canvas - PDF receipt generation
- Lucide React - Icons
- Sonner - Toast notifications
- Node.js + Express - REST API server
- MongoDB + Mongoose - Database & ODM
- JWT - Admin authentication
- Nodemailer - Email service with PDF attachments
- bcryptjs - Password hashing
- Browse luxury villas and casitas with stunning imagery
- Real-time availability checking
- Interactive date picker with calendar
- Flexible guest count management
- Secure booking with verification code flow
- Downloadable PDF receipts
- Email confirmation with receipt attachment
- Smartsupp live chat support
- Secure JWT-based authentication
- Dashboard with booking analytics
- Complete room management (CRUD)
- Seasonal discount configuration
- Booking management & verification
- Manual payment code confirmation
Amanpulo/
├── backend/
│ ├── config/ # Database & constants
│ ├── controllers/ # Route handlers
│ ├── middleware/ # Auth & validation
│ ├── models/ # Mongoose schemas
│ ├── routes/ # API endpoints
│ ├── utils/ # Email service, seeders
│ └── server.js
│
├── frontend/
│ ├── public/ # Static assets, logo, SEO files
│ └── src/
│ ├── components/ # UI components & Receipt
│ ├── layouts/ # Header, Footer, AdminLayout
│ ├── lib/ # PDF generator, utilities
│ ├── pages/ # Route pages
│ ├── services/ # API service layer
│ └── store/ # Zustand stores
│
├── DEPLOYMENT.md # Hosting guide
└── README.md
- Node.js v18+
- MongoDB (local or Atlas)
- npm or yarn
git clone https://github.com/RabbitDaCoder/Amanpulo.git
cd Amanpulo
# Backend
cd backend && npm install
# Frontend
cd ../frontend && npm installBackend (backend/.env):
PORT=5000
NODE_ENV=development
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_secure_jwt_secret
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_gmail_app_password
EMAIL_FROM="Amanpulo Reservation <reservation@amanpuloresort.com>"
FRONTEND_URL=http://localhost:5173Frontend (frontend/.env):
VITE_API_URL=http://localhost:5000/apicd backend
npm run seed:admin # Creates admin user
npm run seed:rooms # Seeds room data# Terminal 1 - Backend (port 5000)
cd backend && npm run dev
# Terminal 2 - Frontend (port 5173)
cd frontend && npm run devSee DEPLOYMENT.md for detailed hosting instructions.
| Service | Platform | Root Directory |
|---|---|---|
| Frontend | Vercel | frontend |
| Backend | Render | backend |
| 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 |
| PATCH | /api/admin/rooms/:id/discount |
Toggle discount |
| GET | /api/admin/bookings |
List bookings |
| PATCH | /api/admin/bookings/:id/confirm |
Confirm booking |
Email: owner@example.com
Password: Passw0rd!
- 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 chat/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
- Preconnect for fonts
- Responsive images
- Website: amanpuloresort.com
- Email: reservation@amanpuloresort.com
- Location: Pamalican Island, Palawan, Philippines
ISC
Built with ❤️ by RabbitDaCoder
