One place for your USDC. CrackPay is a self-custodial dollar wallet on Arc, Circle's chain where USDC is the gas token. It runs as an installable web app at www.crackpay.xyz.
Users see one dollar balance, a Send button and a handle such as @eagle. They
never see a seed phrase, a gas token or a chain name. Each account is a passkey
smart account (ERC-4337) from Circle Modular Wallets, so the keys stay on the
user's device and the backend never holds signing authority over anyone's money.
| Network | Arc mainnet (chain 5042) in production. Arc Testnet (5042002) for development. |
| IdentityRegistry | Mainnet 0xB417597Eb5dd49b69f3a573ad73Fc8B528a16dcF, testnet 0x1c36829d1d82470bfb9FAd9bE264729c26753Ef7. See contracts/deployments.md. |
| Network fees | Normally sponsored by Circle Gas Station. While Circle's paymaster is paused, transactions fall back to the account paying its own fee in USDC (about a cent). |
| Audit | Not audited yet. The mainnet registry owner is still a single key; it moves to a multisig before a wider launch. |
Working today: passkey sign-up and sign-in, handles, one USDC balance, send by handle, receive and payment requests, activity, deposits, and Mini Apps (for example KashLink). Sending to a phone number is not live yet.
apps/web The wallet: Next.js (App Router) PWA, deployed to www.crackpay.xyz
apps/site Marketing site
packages/brand Design system shared by both apps (tokens.css, Mark, icons, buttons)
packages/miniapp-sdk @crackpay/miniapp-sdk on npm, for building Mini Apps
contracts Foundry project: IdentityRegistry.sol, deploy script, tests
supabase/migrations Postgres schema (users and handles, OTP, Mini Apps)
skills AI coding assistant skills for Mini App developers
docs Plan, design, backend, recovery and Mini App notes
Next.js and TypeScript (strict), Tailwind, viem, Circle Modular Wallets and Gas
Station, Supabase, Solidity with Foundry and OpenZeppelin v5, hosted on Vercel.
The full rules (what to use, what not to add) are in CLAUDE.md.
Requires Node 22+, pnpm and, for contracts, Foundry.
pnpm install
cp apps/web/.env.example apps/web/.env.local # then fill it in
pnpm dev # wallet on http://localhost:3000
pnpm dev:site # marketing site on http://localhost:3001Passkeys only work on localhost or the domain registered in Circle Console.
The wallet builds for one network at a time:
NEXT_PUBLIC_ARC_NETWORK=mainnet # or testnet (the default)
NEXT_PUBLIC_ARC_CHAIN_ID=5042 # 5042002 on testnet
NEXT_PUBLIC_ARC_RPC_URL=https://rpc.mainnet.arc.ioContract addresses for each network live in
apps/web/src/config/contracts.ts, with
their source and date. Mainnet and testnet share one Supabase project; the
users and miniapps tables carry a network column so the two never mix.
NEXT_PUBLIC_ variables are baked in at build time. After changing one in
Vercel, redeploy.
Every variable is described in
apps/web/.env.example. Server secrets (attestation
key, phone pepper, Supabase service role, Circle API key) never get a
NEXT_PUBLIC_ prefix.
pnpm typecheck && pnpm lint && pnpm test
cd contracts && forge testDatabase migrations are pushed with
supabase db push --db-url "$SUPABASE_DB_URL".
Mini Apps are web apps that open inside CrackPay and talk to the user's wallet through an EIP-1193 provider. Start with:
npm install @crackpay/miniapp-sdk- SDK docs:
packages/miniapp-sdk/README.md - Developer guide: www.crackpay.xyz/developers
- Assistant skills:
skills/
docs/implementation-plan.md: scope and phasesdocs/design.md: product and visual designdocs/backend.md: API routes and datadocs/identity-recovery.md: handles and account recoverydocs/miniapps.md: the Mini App host and reviewdocs/setup.md: first-time setup
Report vulnerabilities privately to the maintainers rather than in a public issue. Users' funds are controlled only by their passkeys; phone numbers are stored as salted hashes and never go on chain.
MIT © 2026 Cracked Studios