Skip to content

Publish your first creation ​

Your creation on your verified token page, selling in your token. Every kind of creation takes the same path and branches once, at step 2.

  1. Your page
  2. What are you making?
  3. Sell and unlock in your token
  4. Test
  5. Ship

1. Your page ​

You need a verified token page: claim a token you have or create one. You need to be the page's owner or a manager.

To publish an app you also need:

An app shows on a token page when the page's owner is on Pro+ or above. See Token Plans.

Then install the CLI and sign in with that wallet:

bash
npm install -g @chaindaddy/cli@beta
chaindaddy wallet init    # once: a local keystore for the wallet you joined with
chaindaddy app login      # signs a one-time challenge and stores an API key

Rather not install a CLI? An open-source app can go in from the portal instead: see Ship.

2. What are you making? ​

Art and interactive media ​

Generative pieces, toys, stories, experiences: anything that runs in a browser can be a widget on your page. Start from the interactive template, a canvas piece visitors draw on, with a title and palette you set on your page:

bash
chaindaddy app init interactive my-piece
cd my-piece
npm install

Edit src/index.tsx: one React component, exported by name. npm run build bundles it into dist/bundle.js. For a blank widget instead, chaindaddy app init widget my-piece. What each template gives you is in Templates. The rules a bundle follows (one file, React left external, at most 2,000,000 bytes) are in Build your first app, and the props and themes it gets are in Widget development.

A game in JavaScript ​

Start from the game template, a three.js arcade game with a shop that sells from your token's store:

bash
chaindaddy app init game my-game
cd my-game
npm install

Build on it with the web tools you know: FLUX GP is three.js too. If your game talks to a server of its own, declare the origins it connects to with net:connect (your own server). For a full multiplayer game with a server, prizes and a store, fork the FLUX GP kit.

Community ​

Most of it needs no code. From your Token Manager:

That needs none of the steps below. For a card on your page with your open poll and its vote, your links and your holder count, start from the community template and carry on:

bash
chaindaddy app init community my-community
cd my-community
npm install

To react to what happens on your page with code of your own, add a headless runner, chaindaddy app init headless my-runner (Building runners).

3. Sell and unlock in your token ​

Open a store in the Developer Portal, at chaindaddy.io/_developer/store, and add items. Price each one in your token, or in dollars that the page converts to your token at checkout.

KindForIn FLUX GP
non_consumableSomething kept for goodA livery, a car
consumableSomething used up, or a bundleNitro charges, the starter pack
timedA rental or a passA 24-hour car rental, a season pass
unlockFree while a rule holdsA car for anyone holding the token

In your app, declare the iap:purchase permission in the manifest and ask the page to run the sale:

typescript
const res = await onAction({ type: 'iap-purchase', sku: 'badge.gold', quantity: 1 });
// res.data.status: 'confirmed' | 'paid' | 'cancelled' | 'failed'

The page shows its own purchase sheet, and your app never touches the wallet. The fee is 2.5% of a sale, or 0% on a token launched in a Chain Daddy launchpad pool (The fee). The rest, including reading what a user owns: Selling from an app on your token page.

4. Test ​

Open chaindaddy.io/_dev/widgets, choose Test your own bundle, and pick dist/bundle.js and your capp.json. The page loads it through the same loader and sandbox as a token page, with sample token data and both themes, and lists every loader error and sandbox violation. Nothing is uploaded. More in Test locally.

5. Ship ​

bash
npm run validate    # capp.json against the schema
npm run build       # dist/bundle.js
npm run scan        # the same checks we run
npm run pack && npm run sign && npm run submit

Open source? Paste your manifest, a public bundle URL and your repository on the portal's New app page instead. No CLI needed.

When the automated checks pass, send the build for review from its Builds tab, or with chaindaddy app submit --request-review. Once a reviewer approves it, add it to your page from the page's Apps tab. More in Send it for review and the submission pipeline.

Next ​