cza

Crates.iocza
lib.rscza
version0.1.0-alpha.5
created_at2025-08-06 09:50:36.02164+00
updated_at2025-09-10 17:05:38.907576+00
descriptionCLI tool for scaffolding zero-knowledge application projects
homepage
repositoryhttps://github.com/sripwoud/cza
max_upload_size
id1783603
size137,204
Gauthier (sripwoud)

documentation

README

create-zk-app (cza)

Crates.io Version
GitHub Workflow main Coverage Status

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

cargo install cza

Create Your First ZK Project

# List available templates
cza list

# Create a new Noir + Vite project
cza new noir-vite my-zk-app

# 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!

Example Usage

# List all available templates with details
cza list --detailed

# Create a project with a specific template
cza new noir-vite awesome-zk-project

# The generated project includes:
# ├── circuit/          # Noir ZK circuit code
# ├── web/              # Vite React frontend
# ├── mise.toml         # Development environment
# ├── hk.pkl           # Git hooks configuration
# └── .github/         # CI/CD workflows

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

Contributing

Commit count: 41

cargo fmt