The issuance and settlement layer for tokenized page inventory.

A publisher registers regions of a rendered page as discrete, transferable positions. Investors acquire those positions at issue and trade them in a permissionless secondary market. A holder can then delegate write access on a position without surrendering it — the primitive a rental market for advertising demand plugs into.

Conventional ad inventory is rented by the impression and settled by an intermediary that owns the measurement, the auction and the ledger. websitekit unbundles it: the publisher sells the position once, the market prices it continuously, and the holder retains a rentable asset.

  • Publisher — shipsDefines inventory, sets floors, freezes terms of issue. Takes 0.95× the floor at issue and a frozen cut of every resale after it.
  • Holder — shipsAcquires at issue or by displacing an incumbent. Holds a transferable ERC-721 carrying both an income right and a write right.
  • Tenant — shipsRents write access for a term without the holder giving up the asset. Priced terms, escrowed prepayment, rent streamed by the second, and a fee split — all on chain. A take clears the listing but preserves the tenancy.
  • Terms are underwritableTake economics are free until the first position is claimed, then ratchet: they may only move where they cannot strand a holder — takes down, payout up, reversion slower. No admin key, no timelock. An investor reads them once and knows which way they can go.

Issuance, the secondary market and the rental market are built and on chain. Demand routing, an auction over tenancies, and measurement are companion products and are not.

npm create websitekit my-site

Runs with no credentials — the scaffold renders a live, already-traded board on Robinhood Chain testnet.

  • create-websitekitScaffolds a Next.js board that renders against the shared demo site with no credentials.
  • @websitekit/sdkReads, writes and pricing. Takes your viem client; ships no wallet of its own.
  • @websitekit/react<Slot>, useSlot, useBuy, <BuyDialog>. Renders a position by key.

Documentation

Rendered from the markdown in docs/, so the site and the repository cannot drift apart. The API reference is generated from the SDK’s own types.

Reference inventory configurations

Four contracts on Robinhood Chain testnet, cloned from the same implementation. Every price and holder below is read from the chain when the page renders. They differ in the only two dimensions that vary between publishers: what gets carved into inventory, and the terms frozen at createSite. Each page ends with per-position revenue computed from that board’s own on-chain terms.