Build on Solana

Everything Domino does for a Solana app: start from the template or your own app, sign members in with their wallets, reward balances, NFTs and program calls, and move from devnet to mainnet.

Domino runs quests, points and leaderboards for your Solana app. Members sign in with their wallet, Domino reads devnet or mainnet to check what they did, and your app shows the result. This page gathers every Solana guide in one place.

Start

Pick the path that matches where you are.

Sign members in with their wallet

A member's Solana wallet is how Domino knows them and what its quests read. Choose the sign-in that fits your app:

Members can also link more wallets after they sign in. A quest reads every Solana wallet the member linked.

What a quest can check on Solana

Each check reads Solana mainnet or devnet, and each guide starts from a snippet.

Install a snippet with pnpm dlx shadcn@4.21.0 add https://snippets.domino.run/r/<snippet>.json. The NFT check doesn't count compressed NFTs (cNFTs) or Metaplex Core assets.

Points, leaderboards and referrals work the same as for any other app. A leaderboard's payout list names the wallets members proved by signing Domino's own message, for you to pay.

Move from devnet to mainnet

Build against devnet with free tokens, then switch each piece to mainnet before your members arrive.

Point your quests at mainnet

  • Balance and transaction reads. Change chain from devnet's "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" to "solana". ctx.wallet.transactions() reads mainnet when you leave chain out.
  • NFT collections. Change the collection's prefix from solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft: to solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/nft:, with your mainnet collection mint.
  • Token mints and programs. Set your mainnet mint and program in the quest's settings, in code or in Console.

A balance tracker, such as the token-hold-streak snippet's, keeps the chain and token it was published with: add a new tracker for mainnet, with its own key, and point the quest at it.

In the template, both sample quests read the devnet constant in domino/devnet.ts; set it to "solana". A linked Solana wallet reads on both clusters, so members don't link again.

When you set a program, Domino looks for it on mainnet first, then on devnet. A mainnet program that publishes no Anchor IDL there decodes its instructions with the IDL it publishes on devnet.

Promote to Live

Quests change in your project's Test environment. Publish them there, try them, then promote Test to Live, where a person on your team approves the change. See test and live.

Sign members in on Live

  • A Live app login key. Live keys need an HTTPS origin: create one for your deployed address, as in develop on localhost, and allow vouching on it as on your Test key. A promotion never copies keys.
  • Wallet sign-in on Live. If members sign in through Domino, check Solana under Settings → Sign-in in Live too. Each environment has its own setting.
  • Your app's environment. In the template, set DOMINO_APP_LOGIN_KEY to the Live key, DOMINO_APP_ORIGIN to the HTTPS address, and IRON_SESSION_SECRET, which production requires.

A project needs a plan when it goes live; see plans and pricing.

Where next

On this page