File: /home/xedaptot/rms.naniguide.com/README.md
# Hotel Revenue Management System
Laravel RMS cho khách sạn vừa và nhỏ, gồm dashboard KPI, forecast, dynamic pricing, competitor analysis, reports, admin panel và API JSON.
## Stack
- Laravel 11
- Blade + Tailwind CSS + Vite
- Chart.js CDN cho line/bar charts
- MySQL hoặc SQLite qua migration Laravel
## Modules
- Authentication: login, logout, forgot password token, role-based access.
- Roles: `admin`, `revenue_manager`, `reservation_staff`.
- Dashboard: Occupancy %, ADR, RevPAR, TRevPAR, GOPPAR, Total Revenue, Room Revenue, Pickup, Booking Pace, Forecast Accuracy.
- Hotel Configuration: hotel profile, room type list, room count, base/min/max rate.
- Booking Data: manual entry and CSV upload.
- Forecast Engine: daily, weekly, monthly occupancy/ADR/revenue forecast.
- Dynamic Pricing Engine: rule based recommended rate with occupancy, pickup, booking window, day of week and season.
- Revenue Analysis: ADR, Occupancy, RevPAR, TRevPAR, GOPPAR calculations.
- Competitor Analysis: competitor rate shopping and price positioning.
- Reports: daily revenue, monthly revenue, forecast and pickup reports, export PDF/Excel-compatible files.
- Admin Panel: users, hotels, room types, pricing rules and report visibility.
- AI Revenue Recommendation: rule-based recommendation for rate changes, occupancy risk and revenue loss alerts.
## Database
Laravel migrations are in `database/migrations`.
Standalone SQL schema is in `database/schema.sql`.
Sample data is generated by `database/seeders/DatabaseSeeder.php`.
## Setup
For cPanel hosting without SSH/Node build, use `CPANEL_INSTALL.md` and import `database/install-cpanel.sql`. Upload the included `vendor` directory, or run `composer install` on hosting if SSH/Composer is available.
```bash
composer install
php artisan migrate:fresh --seed
php artisan serve
```
Demo accounts after seed:
- `[email protected]` / `password`
- `[email protected]` / `password`
- `[email protected]` / `password`
If the database is empty and you need a quick admin without seeding, open `/bootstrap-admin`.
## CSV Upload
Sample file: `storage/app/sample-booking-data.csv`
Expected columns:
```csv
date,room_type,rooms_sold,revenue,total_revenue,market_segment,booked_at
```
`room_type` may be the room type code or name.
## Web Pages
- `/login`
- `/dashboard`
- `/hotel-configuration`
- `/booking-data`
- `/pricing`
- `/competitors`
- `/reports`
- `/admin`
## API Endpoints
- `GET /api/hotels/{hotel}/kpis?from=YYYY-MM-DD&to=YYYY-MM-DD`
- `GET /api/hotels/{hotel}/forecast?granularity=daily|weekly|monthly`
- `GET /api/hotels/{hotel}/reservations`
- `GET /api/hotels/{hotel}/ai-recommendations`
- `POST /api/room-types/{roomType}/recommended-rate`
Pricing payload example:
```json
{
"occupancy": 84,
"pickup": 22,
"booking_window": 10,
"day_of_week": "Saturday",
"season": "High"
}
```