A Built-for-Bankroll app deploys like any web app, to your own host — Bankroll
never hosts it. Any origin that serves HTTPS works; this page is the Vercel
path the starter is wired for.
The environment
.env.local is gitignored, so the dev configuration — and the dev treasury —
never reach a deployment.
Vercel
Connecting the Blob store injects its token into deployments automatically. Do
not vercel env pull it into .env.local — that overwrites your dev
setup, and worse, points local code at production data.
A production treasury
Generate a fresh key for production — never the dev key, which sits in
plaintext on your machine — and set it so the secret is never printed or
written to disk: generate it and pipe it straight into a sensitive variable.
The public address goes to stderr, so you still see which wallet to fund.
Fund the address with the HSUSD you pay out of, and keep a little SOL on it —
the treasury pays the network fee, and the one-time rent when a payout creates
a recipient’s token account.
Never replace a funded treasury. Swapping the variable strands the balance
— it does not move it. Rotating means: create the new key, move the old
wallet’s entire balance to the new address (npx bankroll treasury send), and
only then swap the variable. A sensitive variable’s value is shown once, at
creation, never again.
Set your RPC
Set SOLANA_RPC_URL before the app pays anyone. Unset, the SDK falls back to
Solana’s public endpoint, which rate-limits under concurrency — and a 429 while
broadcasting a payout surfaces as rpc_error with an unknown outcome, the one
failure you cannot safely retry. The fallback warns once per process rather
than failing, so it will not stop a deploy that forgot it. Any provider works.
Open it
Users open your app at:
— which is playLink() if you’d rather not build it by
hand. Before sharing it, confirm the manifest is live:
No registration or approval is required: once the manifest serves, the /play
link opens your app for any Bankroll user.