13 releases (8 stable)
| 2.4.1 | Dec 22, 2025 |
|---|---|
| 2.4.0 | Sep 30, 2025 |
| 1.0.1 | Sep 27, 2025 |
| 0.1.0-alpha.5 | Sep 10, 2025 |
| 0.1.0-alpha.3 | Aug 7, 2025 |
#1976 in Command line utilities
105KB
2K
SLoC
create-zk-app (cza)
A CLI tool for scaffolding zero-knowledge application projects with modern development tooling and best practices built-in.
What is cza?
cza (create-zk-app) is like create-react-app but for zero-knowledge applications. It provides curated, opinionated project templates that combine ZK frameworks with modern frontend stacks, complete with development tooling and CI/CD setup.
Features
- 🚀 Quick Project Setup - Generate complete ZK projects in seconds
- 🎯 Opinionated Templates - Pre-configured with best practices and modern tooling
- 🔧 Development Ready - Includes mise, git hooks, formatting, linting, and CI/CD
- 🌐 Full Stack - ZK circuits + modern frontend (Vite + TanStack)
- 🛠️ Smart Setup - Automatic dependency installation and project initialization
Quick Start
Installation
From Cargo
cargo install cza
From npm/yarn/pnpm/bun
npx create-zk-app
npm install -g create-zk-app
yarn global add create-zk-app
pnpm add -g create-zk-app
bun add -g create-zk-app
Pre-built Binaries
Download pre-built binaries for your platform from the latest release.
Create Your First ZK Project
# List available templates
cza list
# List templates as JSON (for scripting)
cza list --json
# Preview a template structure (dry-run)
cza new noir-vite my-zk-app --dry-run
# Create a new Noir + Vite project
cza new noir-vite my-zk-app
# Pin template to specific git revision (commit SHA, tag, or branch)
cza new noir-vite my-zk-app --revision abc123def
# Navigate and start developing
cd my-zk-app
mise run dev
Available Templates
Templates are hosted at cza-templates.
| Template | Description | ZK Framework | Frontend |
|---|---|---|---|
cairo-vite |
Cairo Program running in the browser (wasm web worker) with modern frontend stack | Cairo | Vite + React + TanStack |
noir-vite |
Noir Program running in the browser (wasm web worker) with modern frontend stack | Noir | Vite + React + TanStack |
More templates coming soon: Cairo, Risc0, o1js, and more!
How It Works
cza is built in Rust and uses:
- cargo-generate for template processing
- Template repositories hosted on GitHub with Handlebars variable substitution
- Automatic setup via post-generation scripts that install tools and configure the environment
- Embedded registry for fast template discovery and listing
Each template is a complete, working project that includes:
- ZK framework setup (Noir, Cairo, etc.)
- Modern frontend stack (Vite + TanStack Router/Query/Form)
- Development tooling (mise, dprint, biome, convco)
- Git hooks and CI/CD workflows
- Ready-to-use examples and documentation
Development Stack
Templates come pre-configured with:
| Feature | Tool | Purpose |
|---|---|---|
| Build | vite | Fast frontend build tool |
| CSS | tailwind | Utility-first CSS framework |
| Continuous Integration | GitHub Actions | Automated testing, formatting, and releases |
| Conventional Commits | convco | Semantic versioning and changelog generation |
| Conventional PR Titles | amannn/action-semantic-pull-request | Enforce semantic PR titles for squash merges |
| Deployment | GitHub Pages | Static site hosting and deployment |
| Environment, Runtime & Task Management | mise | Tool and language version management |
| Formatting | dprint | Consistent code formatting across languages |
| Git Hooks | hk | Automated code quality checks |
| Import Aliases | typescript paths | Clean import paths with @ prefixes |
| Linting | biome | Fast linting and formatting for JS/TS |
| Routing | @tanstack/react-router | Type-safe React routing |
| Runtime | bun | Fast JavaScript runtime and package manager |
| State | jotai | Atomic state management for React |
| Typings | typescript | Static type checking for JavaScript |
Configuration
Contributing
Dependencies
~43–68MB
~1M SLoC