CCWork
CC
Email me

Work

Solana community tooling

In 2022 and 2023 I led a small team building raffles, a spin-the-wheel game and staking sites for Solana NFT communities, re-skinned per collection. Owners ran their own events in Prismic.

Role
Built the white-label raffle, spin-the-wheel and staking products
When
2022–2023
Client
Solana NFT communities, freelance
Stack
React, Node.js, Express, MongoDB, Prismic, Solana web3.js, and 3 more
Status
Archived
White-label raffles skinned for Balloonsville's $AIR Market: a closed auction for a balloon NFT above a grid of closed raffles
The raffle product, skinned for Balloonsville. Archived.

Context

In 2022 a lot of Solana NFT communities were running raffles, token-spending games and staking for their holders, and every collection wanted its own version in its own art.

Usually that meant a developer on call. Each new raffle, prize or reward change became a request, and communities waited on someone else to run their own events. I was working directly with collection owners, and I wanted to take that dependency away.

So we built the tools once, as white-label products. I led a small team, and each community got the same code in its own skin and ran it themselves through Prismic, a headless CMS.

What I built

Raffles

Holders buy tickets through a token or NFT gate. Owners create and publish raffles in Prismic, with work-in-progress, planned and archived states, and per-raffle requirements such as a Discord ID, a shipping address or a merch size. An admin portal shows winners, ticket purchases and users. Auctions and lotteries came later, for the communities that asked for them.

Spin the wheel

Holders spend the collection's SPL token to spin for on-chain and physical prizes. On-chain prizes go straight to the winner's wallet, and physical prizes like t-shirts and hoodies ask for a shipping address. Owners manage prizes in the CMS, and a prize that runs out drops off the wheel on its own. A side panel shows each holder their history, their shipping details and the leaderboard.

Staking

Communities started on Gem Farm, a third-party custodial platform. I moved Baby Ape Social Club to a custom staking app with pair multipliers, and then moved collections to white-label sites on Cardinal's staking contracts, with admin stats and snapshot exports for airdrops. When programmable NFTs arrived to enforce creator royalties, they couldn't be staked the usual way, so I added pNFT staking support to the Cardinal setup.

The same raffle product re-skinned for Yeah Tigers: an illustrated street scene behind a closed raffle and its tiger NFTs; winning wallet blurred
The same product, re-skinned for Yeah Tigers. Archived.

One codebase per product

Every community ran the same code, and a new collection got a new skin. Balloonsville's red $AIR market, the Yeah Tigers street art, the Baby Ape Social Club jungle wheel, the Sol Yetis mountain and the Metaforge floating islands all have the same layout underneath. A new collection meant new art and its own token in the config, not a fork.

The same layout in five skins

Pick a collection to swap the skin. The layout stays the same.

White-label raffles skinned for Balloonsville's $AIR Market: a closed auction for a balloon NFT above a grid of closed raffles
Choose a collection

Balloonsville Raffles skinned for Balloonsville. An artist handle blurred.

Real screenshots of the deployments, with winner wallets and handles blurred.

Architecture

The white-label suite. Every collection ran on the same front end and API, and each community managed its own through the CMS.
  1. Each collection gets the same React front end with its own skin, deployed on Vercel.
  2. The community's team creates raffles, auctions and prizes in Prismic. Publishing makes them live, and retired prizes leave the wheel.
  3. A Node.js and Express API on Heroku, backed by MongoDB, records tickets, spins, winners and shipping details.
  4. Holders connect a wallet and pay in the collection's token, or hold the gating NFT, to enter or spin.
  5. On-chain prizes pay out to the winner's wallet. A scheduled job redistributes any payout that failed. Physical prizes go to the admin's shipping list.
  6. Staking runs on the collection's staking contracts, with an admin view for stats and snapshots.
Prismic CMS raffle editor published by Balloonsville: raffle image, entry requirements toggles and title fields
Communities created and published their own raffles in the CMS.

Decisions

Owners create, publish and retire their own raffles and prizes in the CMS, with no deploy involved. The CMS models decide what an owner can change, so every new kind of event starts as a content model.

For staking I built on Cardinal's contracts, which handled custodial and non-custodial staking for any standard collection. Staking for a new community was a white-label site with no new contract to write.

Baby Ape Social Club's Lucky Banana Wheel with $DAB prize segments, and prize cards below; wallet blurred
The wheel, skinned for Baby Ape Social Club. Archived.

What went wrong

Burning a token on every spin meant holders sat waiting for a confirmation each time. I added spin credits they could buy up front, so the wheel answered straight away.

Payout transactions sometimes failed when the network was busy. A scheduled job ran every four hours and redistributed any reward whose payout had failed, and every win carried a claim ID for support.

Baby Ape Social Club

Baby Ape Social Club is a Solana collection with its own $DAB token, and it used every part of this. For the club I built the $DAB Island Raffle, the Lucky Banana Wheel, the club's website, pairing for its second collection, Baby Tigers (not to be confused with Yeah Tigers), and the front end and integration for its pair-multiplier staking app.

Other communities

Here's every Solana community I built utility work for in 2022 and 2023, from my own records. Catalina Whale Mixer's holder portal and Floating staking have their own page. White-label staking was built in collaboration with Magic Eden.

I wrote longer versions of this in June 2023, on raffles, spin the wheel and white-label staking.

  • Baby Ape Social ClubRaffle ($DAB Island), spin the wheel (Lucky Banana Wheel), website, Baby Tigers pairing, staking
  • Yeah TigersRaffles, staking
  • BalloonsvilleRaffles and the $AIR auctions market
  • Sol YetisRaffles, the Yeti Underground wheel, staking
  • Metaforge$CRAFT token staking and admin stats
  • Degen DojoSpin the wheel
  • Shrouded PlaygroundWhite-label staking
  • Otaku OriginsRaffles
  • Catalina Whale MixerHolder portal and Floating staking
  • Icarus 2120Solana utility work, 2022–23
  • Wise WhalesSolana utility work, 2022–23
  • HER NFT ProjectSolana utility work, 2022–23
  • Courtyard (Solana, 2022)Solana utility work, 2022–23

Built in collaboration with Magic Eden (White-label staking).

Feature by feature

  • Raffle ($DAB Island Raffle)

    The white-label raffle, skinned as the $DAB Island Raffle, with raffles created and published by the club's team in the CMS and winners shown on the site.

  • Spin the wheel (Lucky Banana Wheel)

    Holders spend $DAB to spin for token and physical prizes. Spin credits let them buy spins up front, so they don't wait on a burn transaction for each one.

    Baby Ape Social Club's Lucky Banana Wheel with $DAB prize segments, and prize cards below; wallet blurred
  • Website

    The Baby Ape Social Club website, alongside the club's raffle, wheel and staking apps.

  • Baby Tigers pairing

    Baby Tigers is the club's second collection (not Yeah Tigers). Staking an ape together with its matching Baby Tiger earns a 1.25× pair multiplier.

    Baby Ape Social Club staking: collection stats, unstaked and staked NFTs, and apes paired with Baby Tigers showing a pair multiplier
  • Staking

    The custom pair-multiplier staking app, the middle generation between Gem Farm and white-label Cardinal staking. I built the front end and the integration.

    Baby Ape Social Club staking: collection stats, unstaked and staked NFTs, and apes paired with Baby Tigers showing a pair multiplier

Screenshots

  • Spin history panel listing each spin, its prize and its burn and payout transactions with paid checkmarks; transaction IDs blurred
    Spin history, with the burn and payout transaction for each spin.
  • Baby Ape Social Club staking: collection stats, unstaked and staked NFTs, and apes paired with Baby Tigers showing a pair multiplier
    Pair staking for Baby Ape Social Club. Archived.
  • Metaforge staking admin: counts of staked NFTs per wallet, a donut of staked ghosts by wallet and a bar chart of top holders; wallets blurred
    Admin stats and snapshot exports, used for airdrops.
  • underground.solyetis.io
    Yeti Underground Club wheel for Sol Yetis: the white-label spin wheel over snowy mountain art, no wallet connected
    The Sol Yetis wheel skin, still live in 2026.
  • Buy spin credits dialog explaining that prepaid credits let a holder spin without waiting for a burn transaction
    Spin credits: pay up front, so a spin doesn't wait on a burn transaction.
  • Spin confirmation dialog: a $DAB win, with a note that a scheduled job redistributes failed payouts; transaction details blurred
    Win confirmation, with the note about the redistribution job. Transaction details blurred.
  • Spin-the-wheel leaderboard ranking wallets by number of spins and tokens burned; wallets blurred
    Spin leaderboard. Wallets blurred.
  • Metaforge $CRAFT Mining staking home over floating-island art, with 7-day and 30-day staking options
    $CRAFT staking for Metaforge.

My part

I built the staking sites and the integration on top of Cardinal's contracts, including pNFT support. For Baby Ape Social Club's pair-multiplier staking I did the front end and the integration. Gem Farm and Prismic are third-party services. Most deployments are offline now, so the screenshots come from my June 2023 articles and web-archive captures.

Numbers

FigureWhat it measures
9documented white-label deployments of one codebase, re-skinned per collection (Casey's June 2023 Medium articles)
Questions