Make and release
Launch work without hiding the machinery
Move from prepared work to a collector page, with the collection, sale rules, wallet request, and receipt kept attached to the release.
Begin with the thing you want to make
Studio asks for intent before it asks for contract settings. Choosing a path selects a workspace; it does not send a wallet request.
Studio routes the work
Choose a module, NFT collection, FRAY work, or auction. Collection and auction intents continue into the release workspace. FRAY opens its own intent builder.
- Creator route
- /studio
- Launch route
- /launch redirects to /studio
- Native family
- Project intent can select Ethereum or Tezos; the Basic release compiler below is Ethereum-only
- The chooser does not connect a wallet or prepare a transaction.
- The selected native family stays explicit in the work that follows.
- Selecting Tezos does not make the EVM OneMint publication path chain-neutral.
Source · Studio available
apps/studio/src/app/launch/page.tsx · apps/studio/src/app/studio/page.tsx · apps/studio/src/components/studio/studio-launch-chooser.tsxDraft first, approve only when needed
Writing release copy, selecting work, setting supply, and arranging the page stay inside Studio. A wallet appears when the workspace needs creator authentication or an onchain write.
- Drafting
- No transaction
- Workspace
- Protected by creator wallet authentication
- Publication
- Ethereum: creator reviews and sends prepared calldata
Source · Studio available
apps/studio/src/components/launch/release-studio.tsx · apps/studio/src/server/services/release-service.tsKnow what each object controls
A project, collection, release, drop, and campaign are related, but they are not interchangeable names.
Project and collection
The project holds prepared work, files, page material, and provenance. The collection is the ownership and mint-capacity shell that receives a launch policy.
- Project
- Work, revisions, presentation, and proof
- Collection
- Ownership, token target, and mint capacity
- Publish check
- The creator must control the target collection
Source · Studio available
apps/studio/src/components/studio/studio-project-view.tsx · apps/studio/src/server/services/release-service.ts · apps/studio/src/lib/studio-project-schema.tsRelease and drop
A release is the saved artist and collector presentation. On Ethereum, Basic Studio publishes it as a OneMint drop with one ordered stage and a shared allocation.
- Release
- Story, work, price, supply, access, timing, and page
- Drop
- OneMint allocation, wallet counts, and stage schedule
- Basic compiler
- Public or Allowlist
Campaign
A KeelMintGate campaign is a separate sale and access policy. Several campaigns can target one collection, each with its own cap, wallet accounting, timing, price, and gate composition.
- Controller
- KeelMintGate
- Allocation
- Per campaign
- Rules
- Merkle, token, custom gate, signature, or a composition
Shape the public promise before publishing
The release wizard keeps artistic choices in front and moves contract preparation to the review boundary.
Format, work, details, page, review
Choose the release format, attach the work, write the details, arrange the collector page, and review the result. Saves happen through explicit actions and step transitions.
- Supply formats
- Open, limited, or 1/1
- Work formats
- Generative, unique, interactive, game, asset, or custom
- Saving
- Explicit save; no autosave promise
Source · Studio available
apps/studio/src/components/launch/release-studio.tsx · apps/studio/src/lib/release-schema.ts · apps/studio/src/app/api/releases/route.ts · apps/studio/src/app/api/releases/[releaseId]/route.tsEthereum: prepare, send, confirm
Studio saves the draft, authenticates the creator, prepares exact EVM createDrop calldata, lets the wallet send it, waits for the receipt, then confirms the correlated DropCreated event.
- Before wallet
- Project readiness, collection control, access, and release values are checked
- Wallet operation
- One OneMint createDrop transaction
- Confirmation
- Receipt target, creator, collection, and metadata digest are correlated
Source · Studio available
apps/studio/src/components/launch/release-studio.tsx · apps/studio/src/server/services/release-service.ts · apps/studio/src/app/api/releases/[releaseId]/prepare/route.ts · apps/studio/src/app/api/releases/[releaseId]/confirm/route.tsPrepare the native operation before claiming publication
A Tezos project can carry Tezos intent and checkpoint/upload planning, but the current Basic release service does not turn that intent into the OneMint createDrop flow. A contract-specific SmartPy adapter, wallet operation, receipt, and public origination evidence are separate acceptance gates.
- Available
- Tezos project intent and bounded preparation
- Not interchangeable
- EVM OneMint calldata and DropCreated receipt
- Required proof
- Native adapter, wallet operation, receipt, and deployed contract evidence
Read the prepared payout, not a draft label
The current basic publication service prepares the connected creator as the payout address. A draft payout field is not proof that a different address reached createDrop.
- Current prepared payout
- Connected creator
- Draft field
- Not authoritative for the prepared transaction
- Collector proof
- Inspect the exact prepared call and live drop
Source · Partial
apps/studio/src/lib/release-types.ts · apps/studio/src/server/services/release-service.tsCollectors enter through a canonical release
Launchpad discovery can group sale records, but the saved release is the page that explains the work and the collector action.
Find work by collection and access
The explorer groups campaign records into collection cards and filters public or gated opportunities before linking to the relevant action page.
- Grouping
- Collection
- Filters
- All, public, or gated
- Destination
- Canonical release or controller-backed action page
Source · Studio available
apps/studio/src/components/launch/launchpad-explorer.tsx · apps/studio/src/components/launch/published-release-shelf.tsxAn address is not a release page
The controller-address route can read live drop state. It does not invent creator copy, invite membership, or signed authorization when no canonical release exists.
- Live read
- Controller, drop, stages, collection, and capacity
- Not inferred
- Story, private eligibility, or authorization
- Public document
- keel.drop@1
Check first, ask the wallet once
A collector connects, sees eligibility and remaining allocation, chooses a quantity, reviews the total, and sends either publicMint or allowlistMint.
- Checks
- Stage, supply, wallet cap, minted count, and eligibility
- Before write
- The exact call is simulated
- After write
- The wallet receipt must report success
- The basic collector supports Public and signed Allowlist releases.
Source · Studio available
apps/studio/src/components/launch/release-collector.tsx · apps/studio/src/app/api/releases/slug/[slug]/eligibility/route.ts · apps/studio/src/app/api/releases/slug/[slug]/authorization/route.tsUse the operator console when the creator compiler is too small
The operator surface attaches to a creator-controlled collection and exposes protocol settings that would clutter the normal release flow.
Build an ordered stage schedule
Configure Public, Allowlist, NFT Claim, Token Payment, Premint, Off, or End stages and inspect collection capacity before preparing the operation.
- Route
- /ops/launch
- Collection
- Attach and inspect, or deploy a plain KEEL721 shell
- Merkle
- Supported by OneMint source, not selectable in this editor
Source · Operator available
apps/studio/src/app/ops/launch/page.tsx · apps/studio/src/components/launch/mint-configurator.tsx · apps/studio/src/lib/mint-launch-schema.tsCompose a campaign
Prepare a campaign with a Merkle root, token gate, signature policy, adapter, or custom gate data. The contract remains authoritative for the final composition.
- UI inputs
- Adapter, Merkle root, token gate, signature policy, and custom gate data
- Current compiler default
- ERC-721 balance with All logic for the token-gate path
- Contract surface
- Broader than the current editor
Bring the proof required by the stage
The operator collector handles public minting, token payment, signed allowlist, and claims, including balances, approvals, entitlement IDs, and replay checks. Premint remains an administrator strike.
- Collector modes
- Public, Token Payment, Allowlist, Claim
- Administrator mode
- Premint
- Write boundary
- Simulate, send, check receipt
Source · Operator available
apps/studio/src/components/launch/collector-mint.tsxSay exactly what has been proven
A source path, deployment record, browser session, and confirmed wallet receipt answer different questions.
Bind acceptance to the exact source
Basic release code, collector code, APIs, controller reads, contracts, and deployment records are present. That does not prove a fresh database session, RPC read, wallet signature, or mint.
- Source shows
- Implemented paths, validation, calldata shape, and receipt checks
- Deployment record shows
- A recorded address and transaction reference
- Fresh acceptance shows
- Database, browser, RPC, wallet, event, and final collector state

