EzeePMS
A command-driven Property Management System for hotels — a TypeScript monorepo built around a centralized command pipeline, with asynchronous domain services consuming off Kafka. Architected for 20,000 operations per second. Engineered under the codename Tartware.
Guest Lifecycle
Reservations, check-in/out, loyalty, and mobile self-service, with full GDPR export, erasure, and restriction support.
Revenue Management
Dynamic pricing, demand forecasting, and hurdle-rate calculations feeding rate decisions in real time.
Financial Operations
Folios, payments, invoicing, and accounts receivable, closing out with full night-audit workflows.
Availability Guard
A dedicated gRPC service holding pessimistic room locks with TTL expiry — the single source of truth against double-booking.
Multi-tenant & RBAC
A five-tier role hierarchy — Owner, Admin, Manager, Staff, Viewer — enforced across every property and every service.
45 Screens, Two Apps
A 40-screen back-office console for staff, and a 5-screen guest portal for booking and self-service check-in.
What it does
Hotel operations touch reservations, guest profiles, rates, folios, and housekeeping all at once — and they need to stay correct under real concurrency (two agents can't sell the same room twice). EzeePMS routes read traffic straight to the owning service, while every write flows through a Command Center into Kafka, where domain services consume it asynchronously and idempotently.
Guest lifecycle
Reservations, check-in/out, loyalty programs, and guest self-service (including mobile check-in), with full GDPR Art. 15-18 export/erasure/restriction support.
Revenue management
Dynamic pricing, demand forecasting, competitor rate intelligence, and hurdle-rate calculations feeding rate decisions in real time.
Financial operations
Folios (5 types, windowing and routing rules), payments, invoicing, accounts receivable, and full night-audit workflows.
Housekeeping
Task management, staff scheduling, and maintenance requests, coordinated off the same event stream that drives room status.
Availability Guard
A dedicated gRPC service holding pessimistic room locks with TTL expiry and date-range overlap detection — the single source of truth against double-booking.
Multi-tenant & RBAC
A five-tier role hierarchy — Owner > Admin > Manager > Staff > Viewer — enforced across every property and every service.
Inside the app
45 screens across two apps: a 40-screen back-office console for staff, and a 5-screen guest portal for booking and self-service check-in — no staff login required.
pms-ui — staff console 40 screens
Everything a property runs on, from the front desk to the back office.
guest-portal 5 screens
The public surface: search and book, then check in from a phone before arrival.
Under the hood
Read traffic proxies straight through the API Gateway to the owning service. Write traffic flows through a Command Center into Kafka, where ten domain services (core, rooms, guests, reservations, billing, housekeeping, availability, notifications, revenue) consume asynchronously — CQRS end to end, with an exactly-once transactional outbox and a dedicated gRPC service guarding room locks against double-booking.
Want the full service breakdown, database schema, or deployment model? Email us — happy to walk through it.
Standards & compliance
Hospitality software lives or dies on getting these right.
Also from FeatureFragment
StoreQL — a multi-tenant stock & store platform for retail commerce