WebSorobandocs v1
Open IDE

templates

Contract wizard

Customise a token, NFT, or counter with feature toggles and a live preview, then scaffold a compile-ready project.


The contract wizard builds a contract from your choices: pick a type, set its parameters, toggle features on and off, and watch the source update live. When it looks right, scaffold it straight into a new project.

Open it from Projects → Customise a contract.

Build a contract#

Pick a contract type

Choose Fungible Token, NFT, Stablecoin, or Counter from the selector. The parameters and feature toggles change to match the type.

Set parameters

Fill in the fields, name, symbol, premint, license, access control. Each type shows only the fields that apply to it.

Toggle features

Switch features on and off. The preview updates and the file tabs change as features add or remove functions. Hover the info icon on a toggle to see exactly which functions it adds.

Add custom functions (optional)

Append typed function stubs with Add custom function. Each becomes a compiling pub fn with a // TODO body.

Create the project

Name it and click Create project. The wizard scaffolds the full source tree and opens it in the editor, ready to compile and deploy.

Contract types#

Fungible Token

An SEP-41 token from OpenZeppelin's Stellar contracts. Set name, symbol, and premint; toggle Mintable, Burnable, Pausable, and Upgradeable.

NFT

A non-fungible collection. Toggle Mintable, Burnable, Enumerable, Pausable, and Upgradeable.

Stablecoin

A fungible token with optional allowlist or blocklist transfer controls.

Counter

WebSoroban's own stateful counter, assembled from feature fragments. Toggle Decrementable, Ownable, Resettable, and Pausable.

The first three are generated by @openzeppelin/wizard-stellar and emit an OpenZeppelin workspace (the deploy target is the member crate, e.g. fungible-contract). The Counter is a single-crate project. Both produce the same bundle the scaffolder uses everywhere else.

Feature dependencies#

The wizard never lets you generate an invalid combination. Two rules apply:

  • Access control is required by some features. On a token or NFT, Mintable, Pausable, and Upgradeable need an owner. If Access control is set to None, the wizard promotes it to Ownable and tells you.
  • Some features require others. On the Counter, Pausable and Resettable require Ownable, so enabling either turns Ownable on and locks it.

Locked toggles

A toggle that another feature depends on is switched on and disabled, with a "Required by …" note. Turn off the dependent feature to free it.

Custom functions#

A custom function is a typed stub, not arbitrary logic. Give it a snake_case name, add arguments (each with a type like u32, Address, or String), and pick a return type. The wizard appends a compiling function to the contract:

pub fn airdrop(env: soroban_sdk::Env, to: soroban_sdk::Address, amount: i128) {
    // TODO: implement this function
}

The env argument is added automatically. Names that collide with the contract's generated functions, Rust keywords, or duplicate arguments are rejected inline.

Save, reuse, and export#

Save as my template

Save the design under My Templates. Re-open it to keep customising, or click Use to scaffold a project from it directly.

Export

Download the single contract file, or the whole project as a .zip.

Deploy#

Wizard contracts deploy out of the box. The generated tokens, NFTs, and the Ownable Counter take a constructor, when you deploy, WebSoroban supplies your own wallet address for every address parameter (owner, recipient), so the contract instantiates without extra steps.

Testnet only

Everything the wizard produces targets Stellar testnet. There is no mainnet path.

Next#