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.
A new Next.js and @solana/kit app with Sign-In With Solana, a Quests page, a Leaderboard page and two quests that check devnet.
Keep your code, login and hosting, and add Domino where you need it. Then pick a sign-in below.
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:
- No login yet: Domino's wallet sign-in, with Solana checked in Settings → Sign-in.
- Your own Sign-In With Solana: sign in with Solana in your own Next.js app, as the template does.
- Privy, Dynamic or Para: keep your login and link its Solana wallets, with Privy, Dynamic or Para.
- Reown AppKit with the Solana adapter: Reown AppKit.
- Your own wallet UI: bring your own wallet provider.
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.
Holding SOL, an SPL or a Token-2022 token. Snippet: token-holder.
Holding a token every day for a run of days. Snippet: token-hold-streak.
Holding an NFT from a Metaplex verified collection. Snippet: nft-holder.
Calling your program, such as a swap, mint or deposit. Snippet: solana-action.
The arguments your program was called with, decoded with its Anchor IDL. Snippet: solana-action.
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
chainfrom devnet's"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"to"solana".ctx.wallet.transactions()reads mainnet when you leavechainout. - NFT collections. Change the collection's prefix from
solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/nft:tosolana: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_KEYto the Live key,DOMINO_APP_ORIGINto the HTTPS address, andIRON_SESSION_SECRET, which production requires.
A project needs a plan when it goes live; see plans and pricing.
Where next
Wallets
Let members link Solana, EVM and Cosmos wallets, sign in with them, and earn rewards for holding tokens and NFTs, staking, or transactions on your contracts.
Use Domino with Privy
Sign members in to Domino with the Privy login your app already has, link their Privy wallets automatically, and make the embedded wallet count for payouts.