A modern, open-source web application designed for boutique hotels. This project comprises a high-conversion, SEO-optimized public landing page for guest bookings, and a real-time, role-gated internal Property Management System (PMS) dashboard for hotel operations.
Core:
- Framework: Next.js 16 (App Router) with React 19
- Language: TypeScript
- Styling: Tailwind CSS v4
Backend & Database:
- Database: Supabase (PostgreSQL) — Realtime, RLS, Storage
- Auth: Supabase Auth (JWT-based, Session Management)
- ORM: Drizzle ORM +
drizzle-kit
State Management & Data Fetching:
- Server State: TanStack Query (React Query)
- Tables: TanStack Table (Headless UI)
- Forms:
react-hook-form+zodschema validation
UI & Assets:
- Primitives: Base UI (
@base-ui/react) - Icons: Iconoir (
iconoir-react) - Animations: Framer Motion
Infrastructure & Tooling:
- Emails: Resend (via Supabase Edge Functions)
- Security: Cloudflare Turnstile (CAPTCHA)
- Monitoring: Sentry & Pino (structured logging)
- Testing: Vitest + React Testing Library + Playwright (E2E)
- Package Manager: pnpm
-
Clone the repository and install dependencies:
git clone <repo-url> cd v7-hotel pnpm install
-
Set up Environment Variables: Copy the
.env.exampleto.env.localand fill in your Supabase, Resend, and Cloudflare credentials.cp .env.example .env.local
-
Database Setup: Ensure you have a Supabase project created. Run the Drizzle migrations to scaffold the database schema:
pnpm run db:generate pnpm run db:migrate
Apply the SQL Editor files found in
supabase/sql-editor/directly in your Supabase SQL console to configure Row Level Security (RLS) policies, triggers, and Vault. -
Run the Development Server:
pnpm dev
The application will be available at
http://localhost:3000. -
Web-Based Installer: Once the application is running, navigate to
http://localhost:3000/installto run the interactive setup wizard. This will securely bootstrap your initial Admin account, hotel branding, and core settings directly into the database.
- Public Landing Page: SSR optimized, stunning dynamic designs with Framer Motion, and a seamless booking wizard.
- Role-Based Access Control (RBAC): Distinct dashboards for Admins, Receptionists, and Housekeeping staff enforcing strictly gated routes.
- Real-Time Synchronization: Supabase Realtime automatically syncs room statuses and booking updates across devices.
- Dynamic Hotel Settings: Fully configurable pricing rules, dynamic taxes, and customized branding managed dynamically via the database.
- Data Export: PDF invoice generation and Excel/CSV analytics exports.
For a deep dive into the system's codebase, data models, state machines, and coding guidelines, check out the Project Architecture & Developer Guide.
Advantages:
- Real-Time Operational Synchronicity: Receptionists, housekeepers, and managers view room statuses (Available, Occupied, Dirty) updated instantly across devices without page reloads, thanks to automated database sync.
- High-Conversion Guest Booking Flow: A seamless, multi-step public reservation wizard optimized for guest UX, featuring interactive maps and secure anti-spam protection.
- Flexible & Global Operations Setup: Full operational configurability—such as regional tax rules (VAT, GST, PPN), currency locales, custom timezones, late checkout check times, and night-deposit rules—managed directly from the Admin UI without code updates.
- Secure Guest Document Storage & Ledger Tracking: Encrypted storage of guest identity numbers (PII protection) and signed download links for uploaded document copies, combined with comprehensive ledger tracking for extra charges (room service, laundry) and automated PDF invoice generation.
Disadvantages:
- No Integrated Offline Guest Registration: The PMS requires an active internet connection to authenticate staff and synchronize room bookings; it lacks a native offline-first local cache for check-ins during network outages.
- No Native Payment Gateway Integration (Simulation Only): The current version features a simulated checkout payment ledger, requiring manual payment validation until direct payment processors are configured.
- Basic Housekeeping Checklist: Housekeeping flows are limited to simple room cleanliness status updates (
dirty➔available) rather than itemized task-checklists (linens, towels, toiletries) or granular staff cleaning assignments.