This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm install- Install dependenciesnpm start- Start web development server (localhost:7474)npm run mobile-start- Start React Native Metro bundlernpm run android- Run on Android (after metro is running)npm run ios- Run on iOS (requirescd ios && pod install && cd ..first)npm run build- Build for production webnpm run lint- Run ESLint and TypeScript type checkingnpm test- Run Jest testsnpm run clean- Clean React Native project
This is a React Native app with React Native Web support, enabling deployment to mobile (iOS/Android) and web from a single codebase.
- React Native 0.77.2 with React Native Web
- TypeScript with strict configuration and path aliases
- React Router (react-router-dom for web, react-router-native for mobile)
- Styled Components for styling
- i18next for internationalization
- Webpack for web bundling
@components → src/components
@screens → src/screens
@config → src/config
@hooks → src/hooks
@utils → src/utils
@assets → src/assets
@types → src/types
- Root.tsx - Nested context providers (Theme, Modal, Hardware wallet contexts)
- App.tsx - Main routing with React Router, error boundaries
- src/screens/ - Main app screens (Pos, Settings, Wallet, History, etc.)
- src/components/ - Reusable UI components with platform-specific variants
- src/config/ - Configuration (currencies, API URLs, Bitcoin settings)
Components support platform-specific implementations:
.tsx- Shared.native.tsx- Mobile only.ios.tsx- iOS only.android.tsx- Android only.web.tsx- Web only
This is a Bitcoin point-of-sale application with:
- Hardware wallet integration (Ledger, Trezor, Bitbox via context providers)
- Bitcoin address validation and wallet derivation (BIP39/BIP84)
- Lightning Network support
- NFC/BoltCard payments
- QR code scanning/generation
- Non-custodial with auto-withdraw features
- Error boundaries with Sentry integration
- SSL public key pinning
- Biometric authentication
- Encrypted storage
- Screen recording prevention
Always run npm run lint which includes both ESLint and TypeScript checking (tsc --noemit).
For mobile development, start Metro bundler first with npm run mobile-start, then run platform commands in separate terminals.
Context providers for hardware wallets are pre-configured in Root.tsx. Use these existing contexts when adding hardware wallet features.