Skip to content

Choosing a Project Scaffold

Caatinga offers three ways to start a new project. Pick the path that matches how much UI and ZK tooling you want on day one.

Install the CLI and prerequisites first — see Getting started — Prerequisites.

Quick comparison

PathCommandFrontendSoroban contractZK (Circom/Groth16)Best for
Templatecaatinga init <dir>Yes (Vite + React)Yes (template default)NoFirst dApp, wallet + bindings pre-wired
Minimalcaatinga init <dir> --minimalNoYes (app stub)NoCLI-first; you pick the UI stack later
ZK templatecaatinga zk init <dir>Yes (zk-starter)Verifier contractYes (multiplier example)ZK dApp with hybrid CLI + browser flow
ZK minimalcaatinga zk init <dir> --minimalNoVerifier contractYes (identity circuit)ZK toolchain only; add UI yourself

Aliases:

  • caatinga init --empty is the same as --minimal.
  • caatinga zk init with no project name adds ZK files to the current directory (see ZK project).

Decision guide

Choose a template when you want a working Vite + React browser dApp with a single-invoker wallet path — wallet modal, placeholder bindings, Vite dev server, and wallet SDK stubs already configured. Official Caatinga templates are Vite + React only (vite-react). Start with react-vite-counter.

Choose minimal when you want a Soroban contract and CLI workflow without committing to a frontend stack. You deploy and read from the terminal first, then wire @caatinga/client when you are ready (any UI framework).

Choose ZK when you need Groth16 proofs verified on Soroban (BLS12-381). Use the zk-starter template for an end-to-end multiplier demo with UI, or zk init --minimal for circuits + verifier only.

Official templates

TemplateCommandStatus
react-vite-counter (default)npx caatinga init my-dappStable — recommended for first walkthrough
zk-starternpx caatinga zk init my-zk-dappStable ZK example with Vite + React shell

See Templates for manifest details and package-manager notes.

Step-by-step guides

GuideWhat it covers
Template projectcaatinga init — full dApp scaffold
Minimal projectcaatinga init --minimal — CLI + contract only
ZK projectcaatinga zk init — circuits, prove, on-chain verify