A Web3 pet-battling game running on both Ethereum and Solana. Breed, train, and battle NFT pets whose art is generated from their on-chain DNA, with battle outcomes resolved from a committed random beacon and published as signed receipts anyone can replay.
Live Demo: https://cryptopets.vercel.app
This is a monorepo containing multiple interconnected projects:
- Frontend - React + Vite web application with wallet integration
- Backend - Node.js + Express API server, battle authority, and settle keeper
- Mobile - React Native cross-platform mobile app
- Website - Next.js marketing/documentation site
- Ethereum Contracts - Solidity smart contracts with Hardhat
- Solana Programs - Rust-based Solana programs with Anchor
- Indexer - Go cross-chain indexer; the only writer of the pet roster
- Image Generator - Pet NFT art and ERC-721 metadata, from Cloudflare Workers AI
- Shared Core - Common utilities, types, and hooks used across clients
- Protocol - The battle protocol: combat engine, canonical encodings, hashes, seed derivation
- Verifier - Standalone verifier that replays a signed battle receipt against the protocol
See docs/ for the battle protocol, testing strategy, and an index of all package-level docs. The component map and data flow live in CLAUDE.md.
See DEVELOPMENT.md for:
- Setup instructions
- Available development commands
- Environment configuration
- Local blockchain setup (Ethereum + Solana)
- Building and testing procedures
# Install dependencies
pnpm install
# Start everything
pnpm devFor detailed setup and commands, see DEVELOPMENT.md.
Frontend: React 19, TypeScript, Vite, Wagmi, Viem, TanStack Query
Backend: Node.js, Express.js, TypeScript, Prisma, PostgreSQL, GraphQL, JWT, Ethers.js, TweetNaCl
Mobile: React Native, TypeScript
Services: Go (indexer, gRPC), Cloudflare Workers AI + R2 (pet art)
Blockchain:
- Ethereum: Solidity, Hardhat
- Solana: Rust, Anchor
See CONTRIBUTING.md for setup, workflow, and pull request guidelines. Please also review our Code of Conduct.
See SECURITY.md for how to report vulnerabilities.
This monorepo uses two licenses depending on the package:
| Package(s) | License |
|---|---|
contracts/ethereum, contracts/solana, services/indexer-go, proto, protocol, verifier |
MIT — fully permissive |
frontend, backend, mobile, website, shared, services/image-generator (and anything else) |
PolyForm Noncommercial 1.0.0 — free for any noncommercial purpose; commercial use requires permission |
protocol and verifier are MIT deliberately: a backend that decides battle
outcomes only holds up if outsiders can replay its receipts, which means the
verifier and everything it depends on has to be freely usable.
Each package's package.json / go.mod directory points at the license that
applies to it. For commercial licensing of the app layer, contact
code@radcrew.org.
Built with ❤️ by the radcrew team
