wolf-demon 4f51bff3d0
Some checks are pending
Build and verify web migration / verify (push) Waiting to run
initial release from codex
2026-09-29 16:56:52 +01:00
2026-09-29 16:56:52 +01:00
2026-09-29 16:56:52 +01:00
2026-09-29 16:56:52 +01:00

GuestOps Web

A Linux-hosted hotel email workspace, developed separately from the Windows GuestOps application. This is the first migration milestone, not a production-complete replacement.

Current development version: 0.1.0

Project progress is tracked in the milestone report. User-visible changes and release limitations are recorded in the release notes.

Working in this milestone

  • Responsive React inbox, message search and status filters, editable saved drafts, approved hotel answers, activity history and hotel settings.
  • ASP.NET Core authentication using protected HttpOnly cookies, password hashing, CSRF validation, login rate limiting and server-derived hotel membership. Owner-only settings and knowledge editing.
  • MongoDB storage with tenant-scoped operations, unique mailbox/message indexes, optimistic concurrency, single-use OAuth state and expiring worker leases.
  • Google OAuth connection and a separate read-only Gmail worker. The first import covers seven days of inbox messages; paginated checkpoints and duplicate suppression survive restarts.
  • Windows-independent booking model, validation, email cleaning, JSON extraction and secret redaction migrated from the hardened desktop code. Live PMS writes have not been ported or enabled.
  • Docker image builds, private MongoDB configuration and an Nginx HTTPS example for the Debian sandbox.

Explicit limits

No emails are sent by this milestone. Drafts are written by staff or assembled from approved hotel answers. AI-generated FAQ replies, automatic sending, PMS/payment workflows, staff invitation/password-reset UI, attachments and complete Gmail-thread aggregation are follow-on work. There is no public registration endpoint. Initial hotel owners are provisioned by the server administrator.

The Google integration needs OAuth credentials and a sandbox mailbox before its live behaviour can be accepted. Automated tests do not access Gmail or a hotel system. An integration being implemented is not a claim of Google verification or production readiness.

Local development

Requires .NET 10 SDK and Node.js 22. In the repository root:

dotnet build src/GuestOps.Worker/GuestOps.Worker.csproj
cd web
npm ci
npm run dev

In a second terminal, start the isolated preview API:

# Linux/macOS shell
ASPNETCORE_ENVIRONMENT=Development Preview=true dotnet run --project src/GuestOps.Api --urls http://127.0.0.1:5180

PowerShell equivalent:

$env:ASPNETCORE_ENVIRONMENT='Development'
$env:Preview='true'
dotnet run --project src/GuestOps.Api --urls http://127.0.0.1:5180

Open http://127.0.0.1:5173 and select Open preview workspace. Each preview login creates its own sample hotel. This mode uses temporary memory storage, does not connect real mailboxes, and cannot start in Production. Do not use the development server as a public deployment.

For MongoDB-backed operation, disable Preview and set Mongo__ConnectionString, Mongo__Database, and a persistent private Keys__Path. See deployment.

Verification

dotnet run --project tests/GuestOps.Tests
cd web && npm ci && npm run build

Set MONGO_TEST_URI to an isolated MongoDB server and TEST_API_URL=http://127.0.0.1:5180 with a preview API running to enable database and HTTP integration checks. The suite creates and drops only its own randomly named guestops_test_* database. CI runs both integrations and builds both Linux images.

See migration status and deployment guide.

Description
No description provided
Readme 804 KiB
Languages
C# 58.5%
Python 24.3%
TypeScript 16.8%
Dockerfile 0.3%