You bring the product idea and the UX. The protocol handles publishing, collecting, payments, identity, and provenance.
@rising-tide/sdk is the only backend your app needs. TypeScript-first. Drop it in, wire one tarball, ship.
Writing pages, open letters, event tickets, prediction brackets, messages in a bottle. Same composable primitives. Add a new domain by registering one config; the rest is free.
Every product type ships with revenue splits, funding-group allocations, and on-chain provenance by default. The chain executes those splits on every collect.
One call. The revenue split is an argument to it, not a second system you run.
import { RisingTideSDK } from "@rising-tide/sdk";
const rt = new RisingTideSDK({
baseUrl: process.env.NEXT_PUBLIC_RT_API_URL!,
apiKey: process.env.NEXT_PUBLIC_API_KEY,
});
const { data: page } = await rt.smartProducts.createPage({
appId: 7,
productTypeSlug: "haiku",
title: "Signal in the Static",
author: "ST1PQ...GZGM",
content: { line1: "...", line2: "...", line3: "..." },
maxEditions: 100,
minFeeStx: "1000000",
minFeeSbtc: "1000",
contributions: {
styleSetId: 4,
collaborators: [{ address: "ST2CY...9BR1", percentage: 20 }],
fundingGroups: [{ id: 2, percentage: 10 }],
},
});
const { data: editions } = await rt.smartProducts.listEditions(page!.id);contributions is the whole split. Name a collaborator and a cause here and the contract pays them on every collect, with no ledger of your own to keep in step.productTypeSlug picks the shape. A haiku, an open letter, a ticket and a bracket are the same call with a different slug and a different content object.{ data, error } union, so a failed call is a value rather than a throw.The SDK is headless: a typed client plus transaction-building helpers, with no React and no UI. The React surface - data hooks, authentication, the app shell, design tokens - ships from the companion @rising-tide/ui package. Take it, or bring your own brand.
The protocol does not know what a page is. It knows a numbered thing, who made it, and who gets paid when it sells.
Every app on the front door is a client of the same API you would be calling. The docs take you from an empty project to a published product.