Receipts docs
v1.1.0
Get help
● Start · 10 minutes

Quick start
running on your computer.

The shortest way from the package to a running site and an operator console on your own computer. It assumes Node.js 20.12 or newer; if not, see Requirements first.

01Before you start

  • node -v prints v20.12 or higher (22 LTS recommended).
  • pnpm -v answers (corepack enable ships with Node; or npm install -g pnpm). npm works too.
  • No Stripe or Telegram bot keys needed for a first look.
  • A terminal: Terminal on macOS, any shell on Linux. On Windows use WSL (Ubuntu) or Git Bash, because the commands below are written for bash or zsh.

02The ten minutes

  1. Open a terminal in the unzipped folderThe one that contains package.json.
  2. Install
    pnpm install           # or: npm install
    better-sqlite3 is a native module. If the install fails while building it, install your build tools (macOS: xcode-select --install; Ubuntu: sudo apt install -y build-essential python3) and run it again.
  3. Create the configuration
    cp .env.example .env
    For a local test set PUBLIC_URL=http://localhost:8787 in .env. Leave the Stripe and Telegram bot values empty. ADMIN_SETUP_TOKEN can stay empty on your own computer: the server then prints a one-time setup code (on a server, set it; see First run).
  4. Build and start
    pnpm build             # or: npm run build   (compiles to dist/)
    pnpm start             # or: npm start       (plain node, no TypeScript loader)
  5. Claim the siteOpen http://localhost:8787, click Create account and sign up with the setup code from the log (or your ADMIN_SETUP_TOKEN). If ADMIN_EMAIL is set, use that email too (First run).
  6. Open the Admin consoleOpen http://localhost:8787/admin and create the console owner with the same setup code (or token), an email and a password of at least 12 characters.

03What you should see

The log prints, among others:

[admin] No owner account yet. Open /admin and create it with this one-time setup code:
    XXXX-XXXX-XXXX-XXXX
[admin] The code is shown once, here only. Each start before the owner exists adds a new code; any printed code works until the owner is created.
[admin] To choose the secret yourself instead, set ADMIN_SETUP_TOKEN in the environment and restart.
  No operator yet. Use the setup code printed above twice: sign up at /signup to claim this site,
  then create the console owner at /admin. (Or set ADMIN_SETUP_TOKEN in .env and restart.)
Receipts listening on http://localhost:8787 (public URL http://localhost:8787) · admin console http://localhost:8787/admin
Stripe off · Telegram off · workers on
  • An empty home page and leaderboard: a real install starts with no providers, no signals and no numbers.
  • http://localhost:8787/healthz answers {"ok":true,"version":"1.1.0"}.
  • The Admin console shows a warning: members have no way to pay yet. That is expected until you set a payment method (Earnings).
One setup secret, two accounts

The same secret claims the operator account of the marketplace (the one that sees Operations) and creates the owner of the Admin console at /admin. It is ADMIN_SETUP_TOKEN when you set one, otherwise the code printed at start (a new one on every start until both accounts exist). Without it nobody can create either account. ADMIN_EMAIL, when set, is checked in addition; it is never enough on its own.

Want sample data?

Start once with DEMO_MODE=1 in .env to get a labelled demo checkout and labelled strategy bots that publish real, sealed signals from live prices. Only on a test copy, never on a live site.

Next

Continue with Installation for a server, or go straight to Admin console.

The public home page: a headline, a sample sealed record with its source, entry, stop, target and result, and counters for sealed records, computed results and providers
The page a visitor lands on. Each record links to its seal, so a reader can check it instead of trusting it.