This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Walletbeat is a comprehensive rating platform for Ethereum wallets. It's built as a static site using Astro, TypeScript, and React, featuring a data-driven architecture that objectively evaluates wallet features across multiple categories (security, privacy, self-sovereignty, transparency).
# Development
pnpm install # Install dependencies
pnpm run dev # Start development server (http://localhost:4321)
# Quality checks (run after code changes)
pnpm run check:quick # Fast checks (lint, syntax, spelling, misc)
pnpm run check:all # Complete checks (includes Astro check)
# Building
pnpm run build # Build for production
pnpm run preview # Preview production build
# Fixing issues
pnpm run lint # Auto-fix syntax and lint issues- Wallet Data (
/data/[wallet-type]/): Raw wallet metadata and feature data - Features (
src/schema/features/): Objective, factual data about wallet capabilities - Attributes (
src/schema/attributes/): Evaluation logic that transforms features into ratings - Attribute Groups (
src/schema/attribute-groups.ts): Logical groupings of related attributes
Each attribute evaluates wallet features and returns one of 5 ratings:
PASS: Meets criteria completelyFAIL: Does not meet criteriaPARTIAL: Partially meets criteriaUNRATED: Insufficient data for evaluationEXEMPT: Not applicable to this wallet type
- Hardware wallets: Physical devices for key storage
- Software wallets: Browser extensions, mobile/desktop apps
- Embedded wallets: SDKs integrated into other applications
- No
WalletFeaturesfields should beundefined(usenullfor unknown data) - Wallet feature data must be objective and unopinionated
- Attributes evaluate only feature data, no other inputs
- Always run
pnpm run check:quickafter changes - Run
pnpm run check:allbefore considering tasks complete - Fix prettier issues with
pnpm lint - Never use
eslint-disableoras anyworkarounds - Add spelling exceptions to
.cspell.jsononly for valid terms
- Avoid MUI component modifications (project is migrating away from MUI)
- Prefer Tailwind classes over MUI components
- Use CSS variables from
global.cssfor theming
- Copy appropriate
unrated.tmpl.tsfromdata/[wallet-type]/ - Rename to
[wallet-name].tsand populate with wallet data - Import in corresponding
data/[wallet-type].tsfile - Submit pull request
/data/: Wallet data organized by type (hardware, software, embedded)/src/schema/: Type definitions and evaluation logic/src/components/: React components for UI/src/pages/: Astro pages and routing/deploy/: Build and deployment scripts