An open-source property management system for hotels and vacation rentals, built on Channex.
Status: pre-alpha. An instance can be installed and used for the daily front desk of a property:
- rooms and room types;
- direct reservations with guests;
- per-room rate plans, nightly prices and restrictions, and reservation quotes;
- the planning and the Today screen;
- check-in and check-out;
- housekeeping status;
- dated room blocks and maintenance tickets;
- reservation folios, extras, manual payments and refunds, with balance-aware check-out (a credit never blocks it) and a printable non-fiscal statement.
All of it works in Italian or English. Workspaces connect their own Channex account and can import supported OTA bookings after mapping properties and room types. Local rates and quotes and guarded ARI publication are available after explicit takeover. Property performance reports include occupancy, ADR, RevPAR and booked room revenue. Folios and manual payments are partial: taxes are not computed until a country module is installed, and there are no fiscal documents or online payment providers. Country-specific compliance modules are planned.
See the product status for what is implemented, partial and planned.
Product preview

The animation uses fictitious demo data. A room change is made in the stay's assignment dialog; dragging an existing stay bar is not supported. See the Italian product presentation and the showcase capture guide for more screens.
Deploy in one click
Private repository installation is available now. The owner can import this private repository at vercel.com/new/import from their own Vercel account. An invited collaborator cannot import a repository owned by another personal GitHub account directly into Vercel; they can import a private fork they own if private forking is allowed, or clone the repository and upload it with the Vercel CLI. In either case, set the project root to apps/web, use Node.js 24 and the Next.js framework, attach a Neon or Supabase PostgreSQL Marketplace integration, and set AUTH_SECRET, GUESTCRAFT_DATABASE_ROLE_SECRET, ENCRYPTION_KEYS and CRON_SECRET for production. Generate the values and setup code in the offline browser page, then deploy to production and open /setup. The step-by-step guide covers both private paths, database regions and CLI commands.
Deploy Buttons below are available when the repository is public. Their secret-generator link also needs the documentation site, which the docs workflow publishes to GitHub Pages from main. Until then, open the generator HTML file locally; no secret leaves the browser.
Choose a database in the same region as the app (fra1 for an EU button), paste the four generated values into Vercel, then open /setup on the deployed site and enter the generated setup code. Production migrations run during the build; previews never migrate. A disposable CLI-upload installation with free Neon in Frankfurt was verified on 27 October 2026, including setup, sign-in, property, rooms, reservation and check-in; the public buttons remain untested while the repository is private. See the one-click deployment guide for prerequisites, updating, schedules and recovery.
Run locally
Use Node.js 24 (see .node-version), pnpm 12.15 through Corepack, and Docker Compose.
-
Copy
.env.exampleto.env. -
Generate separate values with
openssl rand -hex 32forAUTH_SECRET,POSTGRES_PASSWORDand the independent integration key. Put them in.env, withENCRYPTION_KEYS=1:<integration-key>. -
Build this checkout and start the instance:
docker compose -f docker-compose.yml -f docker-compose.build.yml up --buildAfter the first release,
docker compose upalone runs the published images of the version indocker-compose.yml(installation guide).
Open http://localhost:3000/setup. The migration service prints the private setup code. Setup creates the first operator, company and production workspace once; public sign-up stays closed. Sign in, then enter your Channex production API key in /onboarding, or complete that step later.
See the installation guide for configuration, local development and hosted deployments. Connection validation works locally and in previews. Booking acknowledgements and webhook registration require the owning production instance. See booking import for the supported workflow and limits.
Developer documentation
- Developer guide: current scope and where to start.
- HTTP API: cookie sessions, workspace selection and errors.
- TypeScript SDK: the private MIT workspace package in
packages/sdk.
On a running instance, /docs is the documentation hub, /api/v1/docs is the interactive API reference, and /api/v1/openapi.json serves the specification. The checked-in contract is openapi/v1.json.
The API uses signed session cookies. GuestCraft bearer API keys are not implemented. The SDK uses native fetch and the same session; it is not published to npm.
Contribute
corepack enable
pnpm install
pnpm test # fast tests, no Docker
pnpm test:coverage # includes PostgreSQL integration tests; needs Docker
pnpm quality # all CI checks
Report bugs and propose features in GitHub issues; SUPPORT.md says where each kind of question goes, and vulnerabilities follow SECURITY.md. CONTRIBUTING.md explains the workflow and conventions. The repository guide describes package boundaries and the target architecture; ADRs record decisions. ADR 0021 describes the implemented Channex onboarding flow. The original technical analysis, in Italian, also includes planned capabilities.
License
The core and applications use AGPL-3.0-only; client libraries, the SDK and the OpenAPI contract use MIT. Documentation uses CC-BY-4.0. File notices and REUSE.toml define the license of each file; see ADR 0004.
GuestCraft is not affiliated with Channex.
Guarded ARI publication adds rate-plan mapping, numbered property leases, booking barriers, shared pacing and health/resync with explicit takeover. Historical reconciliation and remote drift repair remain partial. See the ARI workflow.