A privacy-preserving skill tree and leaderboard built on the Aztec Protocol.
A privacy-preserving skill tree and leaderboard built on the Aztec Protocol.
This project lets builders learn, prove, and selectively reveal their skills using zero-knowledge proofs. Each challenge lives inside a “skill forest”: you complete tasks off-chain or in the browser, generate a proof, and submit it to Aztec. The protocol verifies that you met the requirements without exposing your raw activity or data.
Users control exactly what becomes public: they can reveal just a tier (e.g. “Rust: Gold”), only completion status, or keep results fully private while still accruing private progress. Public data powers a leaderboard and profile layer, while private data stays encrypted inside Aztec as part of a personal “My Garden” view of their full skill tree.
The goal is to create a portable, privacy-first reputation layer for technical skills and learning journeys. Communities, hackathons, and education programs can plug in their own challenges and scoring logic, while benefiting from a shared, on-chain, privacy-preserving skill graph instead of yet another centralized badge system.
This project is built as a TypeScript monorepo with a clear split between frontend, game logic, and ZK/contract infrastructure. The main app is a Next.js 16 frontend (apps/aztecbat-ui) styled with Tailwind and wired to Ethereum using Wagmi + Viem. It handles the full “learn → prove → selectively reveal” UX: users pick skills, attempt quests, generate a proof, and choose whether to publish a tier to the public leaderboard or keep it private in their “garden” view.
Under the hood, the core logic lives in dedicated packages: core-logic contains our Aztec/Noir circuits and quest interfaces, while game-engine orchestrates the quest registry, validators, and the skill/leaderboard rules. Public state is managed by Solidity contracts (e.g. the SkillLeaderboard and SelfHuman SBT contracts), with a small indexer service that tracks on-chain events and feeds the UI summarized data for skills and profiles.
The whole system is glued together with pnpm and Turborepo for fast builds and shared types, and deployed via Vercel for the web app. On the ZK side, we use Aztec devnet + Noir tooling for compiling and testing circuits, and a custom “white-hat UX” layer that maps privacy choices (public / mixed / private) into visual metaphors like bioluminescent trees and seasons in the Skill Forest. The result is a private-by-default learning stack where the cryptography lives in dedicated packages, and the frontend can iterate quickly on game-like interactions without constantly touching the backend.

