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
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:
- any paid plan, monthly or yearly (a trial doesn't count), and
- membership in the Developer Beta Program: sign its agreement at chaindaddy.io/_developer with the wallet that holds the plan.
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:
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 keyRather 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:
chaindaddy app init interactive my-piece
cd my-piece
npm installEdit 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:
chaindaddy app init game my-game
cd my-game
npm installBuild 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:
- Community Polls, where each vote counts by the voter's holding;
- Holder links, and community gating for Discord and Telegram;
- drops for your supporters.
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:
chaindaddy app init community my-community
cd my-community
npm installTo 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.
| Kind | For | In FLUX GP |
|---|---|---|
non_consumable | Something kept for good | A livery, a car |
consumable | Something used up, or a bundle | Nitro charges, the starter pack |
timed | A rental or a pass | A 24-hour car rental, a season pass |
unlock | Free while a rule holds | A 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:
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
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 submitOpen 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
- Reward your community with token prizes.
- Build a game with a server, using the FLUX GP guide.
- Everything your manifest can declare: the manifest reference.