State, not decoration
A room is marked arrival-ready only after checking occupancy, maintenance blocks, critical incidents, unfinished tasks and explicit inspection evidence.
TypeScript · Domain rulesPRODUCT / ENGINEERING EVIDENCE
Hospitality operations, tested as a connected workflow.
A hospitality software case study covering room readiness, housekeeping, reservation state and the engineering rules beneath a working read-only demo.

Existing product image from the portfolio. Screenshots illustrate the application, not independent proof of production use.
Hospitality teams cannot decide whether a room is available by looking at a single status field. A reservation, ongoing cleaning, technical room block or unresolved incident may change the actual answer. StayOps models this decision across connected workflows.
Technology choices are explained through what they protect or enable, rather than listed as logos.
A room is marked arrival-ready only after checking occupancy, maintenance blocks, critical incidents, unfinished tasks and explicit inspection evidence.
TypeScript · Domain rulesAuthenticated workflows live in Next.js server actions using a property-scoped Supabase client. Role checks and database policies must both agree.
Next.js · Supabase Auth · PostgreSQLReadiness calculations follow a property's timezone. Tests include midnight boundaries and the daylight-saving change in Paris.
Intl.DateTimeFormat · Node testsNo invented clients, invented numbers or imaginary certifications. Each statement has a clear verification boundary.
Read-only workspace and planning routes were reached from the deployed StayOps application.
A read-only demo does not demonstrate privileged writes.
housekeeping-readiness.ts combines reservation, block, incident and task state before a room can be ready.
Actual database context completeness must be checked.
On 23 October 2026, GitHub Actions ran the three test suites on a Linux runner: 57 tests passed, 0 failed; TypeScript validation and Next.js build also passed (revision 13891edc).
CI run 40002475017 is recorded in the private repository; independent public review requires repository access. No browser E2E or live database verification was performed.
The private repository contains specific security, schema, migration and staging readiness reports.
Prior reports noted unresolved staging/production gates; no production security sign-off is claimed.
A responsible prototype is explicit about the tests it passes and the production checks it has not passed.
EXPLORE THE ACTUAL WORK
The public demonstration shows actual application screens with synthetic data. Engineering implementation and sensitive infrastructure remain private.