paid-waitlist-page — a signup page that persists and can charge
Session (auto — never dead-stop on auth): before your first
settlemeshcall, runsettlemesh whoami; if it errors andSETTLE_API_KEYis unset, runsettlemesh loginyourself — it opens the browser for a one-time human approval, polls until approved, and caches the session. Do NOT stop to ask the user to "log in manually" — drive it. Keep an explicit human confirmation only for spending / credential-lending actions (fail-closed).
Every "landing page generator" hands you an index.html and stops — leaving you
the three hard parts: persist the signups somewhere, host the page on a
real URL, and charge for pre-orders. A prompt-only skill can't run a database,
keep the page alive, or move money. SettleMesh closes all three in one deploy.
This is a specialization of ship-paid-app (the deploy engine) + charge-my-users
(end-user billing). Read those for the general case; this is the waitlist recipe.
Recipe
- Generate the page — a static or Node/Python page with a signup
<form>that POSTsemail(and whatever else) to your handler. Point the write at the managed DB (the runtime DB connection is injected by--full-stack). - Deploy full-stack — creates the managed database + SettleMesh auth + a runtime API key, and returns a live URL. The form now persists.
- Optionally gate with a price — add a flat pre-order/paywall checkout.
# Setup once:
npm install -g settlemesh@latest && settlemesh login # or SETTLE_API_KEY=sk-settle-...
# Persist-only waitlist (form writes to the managed DB):
settlemesh deploy ./waitlist --name waitlist --full-stack --wait --json
# Paid pre-order / paywall (flat SettleMesh checkout in front of access):
settlemesh deploy ./waitlist --name waitlist --full-stack \
--with-payment --payment-price-credits 50 --wait --json
Read the live URL from the deploy JSON (don't guess it). The page is reachable
at <name>.run.settlemesh.io; no domain to buy or configure.
Two ways to monetize
--with-payment --payment-price-credits N— one flat SettleMesh checkout price for access / the pre-order (minimum 50 credits). Best for "pay $X to reserve / unlock early access". This is a paywall, not per-use metering.X-Settle-Payer(thecharge-my-usersskill) — metered, per-action billing of the end user instead of a flat gate. Use this when each action (a generation, a lookup, a download) should bill the visitor rather than charging once at the door.
Inspect the stored signups
The full-stack DB is a real managed database — query it with settlemesh db
(each command takes the app's <project-id> from the deploy output):
settlemesh db migrate <project-id> --sql \
"create table if not exists signups(id serial primary key, email text, created_at timestamptz default now())"
settlemesh db query <project-id> --sql "select count(*), max(created_at) from signups" --json
settlemesh db get <project-id> --json # DB metadata / connection info
Verify it's live
settlemesh deploy status <app-id> # build/deploy state
settlemesh deploy url <app-id> # re-fetch the public URL
Notes
--full-stack= DB + auth + runtime key; the form's write path uses the injected DB connection, so signups survive restarts — nothing to wire manually.- Everything is billed in Aev (1 USD = 100 Aev). Deploy and
--with-paymentare confirm-gated; check balance withsettlemesh aev balance.
