2026

Hotel PMS

Property management and booking system for small hotels, with a live calendar and channel sync.

Role
Designed and built (solo)
Year
2026
Stack
React · TypeScript · Tailwind CSS · Supabase

Repository (opens in a new tab)

How it works

  1. Open the property

    Set the name, currency, hours, and rooms.

  2. Take a booking

    Choose a room and dates. An overlap is rejected in the database.

  3. Stay in sync

    Each room can export an iCal feed and import one from a channel.

Overview

Hotel PMS is a booking and property system for boutique hotels, resorts, and serviced apartments. Staff get a calendar, a guest list, and a revenue view. I designed and built it solo.

Problem

A small property still has to stop the same room being sold twice, including when a booking arrives from an online travel agency. A spreadsheet misses that overlap.

Solution

The calendar is the daily view. Postgres rejects a second active booking for the same room and dates. Each room can publish an iCal feed and import one from a channel.

Key features

  • Month, week, day, and agenda calendar
  • Guest directory with reservation history
  • Revenue figures, including average daily rate
  • iCal export and import for channel calendars
  • Installable PWA, with a phone layout and bottom tab bar
  • Staff sign-in with Row Level Security

Security notes

Staff accounts use Supabase Auth. Row Level Security covers the property records. An overlapping stay is rejected by a database trigger, so the check does not depend on the calendar screen alone.

Outcome

A property can record a stay, block those dates against another booking, and read revenue from the reservations it stored.