Spa and massage
Booking that understands rooms
A treatment needs a free therapist and a free room. Most tools check only one.
$149 one business · $399 unlimited · one payment

Still Water Spa — Engine 1.27.1 · spa pack · Full edition
Measured, not estimated
Run the suite yourself the day it arrives.
20
at the same second
35 / 35
checks passing
200 / s
requests sustained
2
code reviews
What you are buying instead of
3–6
weeks of work
$6,000+
at a freelance rate
$0
a month, ever
Guests, on a phone
For one,or for two.
Two guests reserve together and are put side by side in the suite, or in a room each.
- A treatment, and how long it takes
- Anyone available, or by name
- A woman or a man, if they mind
- A short consultation
- A deposit, or a voucher's code


The part that makes it a spa
A room is bookedlonger than the hour.
Every treatment needs a room, and every room needs resetting before the next guest lies down.
- Five rooms, each with its own reset
- Hatched into the diary
- Never offered to a guest
- A suite with two tables
- The diary by room, or by therapist


The front desk, all day
What they told you,and nobody else.
What a guest says about their health is seen by the team and never written into an email.
- The consultation, kept on the record
- The statement they agreed to
- Deposits, vouchers, what is still to pay
- A reminder names the time, never the treatment
- Erased with the guest


Therapists, between guests
The day, andthe room after it.
iPhone and Android off one codebase, so the desk and the treatment room never disagree.
- Today, and who is still to come
- What the guest told the spa
- The rooms, as they are now
- Check in and complete



What arrives
The whole repository.Not a zip of a demo.
- apps/
- webNext.js 16 · the site, the booking flow, the dashboard, the admin console
- mobileExpo 57 · the staff app for iPhone and Android
- packages/
- bookingthe rules engine — pure, no database, no clock, 100% branch coverage
- niche-corethe packs: nouns, feature flags, starting rules, fonts, sample business
- apiHono routes and the query modules behind them
- dbDrizzle schema + 33 numbered SQL migrations
- authBetter Auth, the roles, the permissions, the sign-in rate limits
- emailtemplates and senders: SMTP, Resend, Postmark
- i18nEnglish and Spanish, nine catalogue files each
- jobs · links · storage · abuse · sharedthe tick, signed links, uploads, rate limits, start-up checks
- ui · cms · billing · analytics · monitoringtokens and components, legal copy, subscriptions, Sentry and PostHog
- client/the only folder your project writes in
- src/brand.tsname, logo, icon, link preview, languages
- pack.tsanything you change about the pack
- client.jsoncookie prefix, app scheme, phone app name and icons
- i18n/index.tsreplace any sentence the engine ships
- legal/index.tsyour client's facts, into the five legal pages
- extensions/your own routes and event subscribers
- migrations/your own tables, run after the engine's
- docs/
- compliance/six documents, including the answers to Apple's and Google's privacy forms
- engine/public-api.mdwhat stays stable across releases, and what does not
- CORE-PATCHES.mdevery engine file your project touched, so the next update merges
- UPGRADING.md · CHANGELOG.mdwhat each release needs you to do
$pnpm client:create <slug> --pack barbershop --edition full
A private project from the engine's release branch, with your name on it.
$pnpm dev
Running on your machine in about a minute, with the sample business already in it.
$pnpm verify
Checks, format, lint, types, migrations, doctor and every test. Stops at the first failure.
$pnpm build:web && pnpm --filter web cf:build
A production build, and a Cloudflare Worker from the same source.
$pnpm engine:update engine-v1.3.3
Merges the new release on a branch and prints what changed. Conflicts can only be in files you already recorded.
What it will not do.
Nobody else prints this. We would rather you found out here.
Booking
- No group classes or several people in one slot
- No waiting list for a full day
- No bookings the business approves first
- Customers cannot set up a repeating booking themselves
Money
- No tax, tips, receipts or invoices
- No discounts, promotion codes or gift cards
- No memberships or prepaid packages
- No card on file, and no no-show fee
Customers
- No customer accounts and no “my bookings” page — signed links only
- No tags, merging or importing
- No referrals, reviews or follow-ups
- No marketing email
Reach and platform
- No embeddable widget, because framing is blocked outright
- No structured data for search engines, and no Reserve with Google
- No push notifications on the phone app
- No API keys and no OpenAPI description
One payment.Then it is yours.
You host it. Nothing phones home. Thirty days to change your mind.
Lite
$149
once · This pack.
One business, one booking site.
- Complete source code
- One niche pack of your choice
- Single-business booking site
- Setup guide and documentation
- Twelve months of updates
Full
$399
once · This pack.
Multi-tenant platform with the admin console.
- Everything in Lite
- Many businesses from one install
- Platform admin console
- Business self-sign-up
- A brand folder per business
- Twelve months of updates
All packs
$899
once · All nine packs.
Every niche pack, plus new ones for twelve months.
- Everything in Full
- All nine niche packs
- Every new pack for twelve months
- Priority support queue
The difference between $149 and $399 is $250, once — and no fee per client, ever.
Yours in five commands.