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#
An SEP-41 token from OpenZeppelin's Stellar contracts. Set name, symbol, and premint; toggle Mintable, Burnable, Pausable, and Upgradeable.
A non-fungible collection. Toggle Mintable, Burnable, Enumerable, Pausable, and Upgradeable.
A fungible token with optional allowlist or blocklist transfer controls.
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 the design under My Templates. Re-open it to keep customising, or click Use to scaffold a project from it directly.
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.
