thehardwarestore.ai

where AI agents shop for the right tools

$ show tonwhales/wallet

[account ↗] [repo ↗] APPLICATION ★ 201 81 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is the Tonhub Wallet, a non‑custodial mobile cryptocurrency wallet for the TON blockchain with additional Solana support. It is a full‑featured wallet that supports multi‑account management, token transfers (jettons), staking (liquid staking, native pools), hardware wallet integration (Ledger), a dApp browser using TonConnect v2, and financial products such as the Holders card program and Changelly exchange. The application also includes an AI chat assistant for transaction markup and operations, push notifications via Firebase, and deep‑link navigation for seamless URL handling. Built using React Native and Expo, the codebase is structured around a fragment‑based screen architecture, with custom hooks and React Query for data fetching, Recoil for state management, and a centralized query key factory. Despite its breadth, the codebase exhibits well‑defined separation of concerns with reusable UI components (e.g., ItemButton, RoundButton, WImage) and data patterns (e.g., batched metadata fetching, structural sharing for transaction lists). However, there are signs of technical drift, such as hardcoded endpoints, some deprecated library usage, and platform‑specific native modules that require ongoing maintenance.

RATING7.8/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS17
VELOCITY0.75
OPEN ISSUES12
CLOSED ISSUES36
LAST COMMIT2 months ago
@babel/plugin-proposal-private-methods (npm) ^7.16.11
@babel/preset-typescript (npm) ^7.16.7
@coral-xyz/anchor (npm) ^0.31.0
@craftzdog/react-native-buffer (npm) ^6.0.5
@dedust/sdk (npm) ^0.8.6
@expo/react-native-action-sheet (npm) ^4.0.1
@gorhom/bottom-sheet (npm) 5.1.4
@intercom/intercom-react-native (npm) ^8.3.0
@ledgerhq/hw-transport (npm) ^6.28.8
@ledgerhq/react-native-hid (npm) ^6.30.0
@ledgerhq/react-native-hw-transport-ble (npm) ^6.29.5
@react-native-clipboard/clipboard (npm) ^1.8.5
@react-native-community/hooks (npm) ^2.8.1
@react-native-picker/picker (npm) 2.4.10
@react-native-segmented-control/segmented-control (npm) ^2.4.2
@react-navigation/bottom-tabs (npm) ^6.5.11
@react-navigation/native (npm) 6.1.9
@react-navigation/native-stack (npm) ^6.9.12
@react-navigation/stack (npm) 6.3.20
@shopify/flash-list (npm) ^1.6.4
@shopify/react-native-performance (npm) ^4.1.2
@shopify/react-native-skia (npm) 0.1.196
@solana/functional (npm) ^2.1.0
@solana/pay (npm) ^0.2.5
@solana/spl-token (npm) ^0.4.13
@solana/webcrypto-ed25519-polyfill (npm) ^2.1.0
@tanstack/query-sync-storage-persister (npm) ^4.32.6
@tanstack/react-query (npm) ^4.32.6
@tanstack/react-query-persist-client (npm) ^4.32.6
@ton-community/ton-ledger (npm) ^7.2.0-pre.3
@ton/core (npm) ^0.60.1
@ton/crypto (npm) ^3.2.0
@ton/ton (npm) ^15.3.1
@tonconnect/protocol (npm) 2.3.0-beta.0
@yornaath/batshit (npm) ^0.10.0
automerge (npm) 1.0.1-preview.7
axios (npm) ^0.24.0
babel-plugin-transform-remove-console (npm) ^6.9.4
bn.js (npm) ^5.2.0
bs58 (npm) ^6.0.0
buffer (npm) ^6.0.3
color (npm) ^4.2.3
date-fns (npm) ^2.28.0
events (npm) ^3.3.0
expo (npm) ^49.0.16
expo-app-loading (npm) ~2.0.0
expo-asset (npm) ~8.10.1
expo-barcode-scanner (npm) ~12.5.3
expo-blur (npm) 12.8.0
expo-camera (npm) ~13.4.4
expo-constants (npm) ~14.4.2
expo-crypto (npm) ~12.4.1
expo-device (npm) ~5.4.0
expo-haptics (npm) ~12.4.0
expo-image (npm) ~1.3.5
expo-image-picker (npm) ~14.3.2
expo-intent-launcher (npm) ~10.7.0
expo-keep-awake (npm) ~12.3.0
expo-linear-gradient (npm) ~12.3.0
expo-linking (npm) ^6.0.0
expo-local-authentication (npm) ~13.4.1
expo-network (npm) ^5.4.0
expo-notifications (npm) ~0.20.1
expo-random (npm) ~13.2.0
expo-screen-capture (npm) ~5.3.0
expo-secure-store (npm) ~12.5.0
expo-splash-screen (npm) ~0.20.5
expo-status-bar (npm) ~1.6.0
expo-store-review (npm) ^6.6.0
expo-system-ui (npm) ^2.6.0
expo-web-browser (npm) ~12.3.2
fast-html-parser (npm) ^1.0.1
fp-ts (npm) ^2.12.1
i18next (npm) ^21.6.5
int64-buffer (npm) ^1.0.1
io-ts (npm) ^2.2.16
is-valid-domain (npm) ^0.1.6
jest (npm) ^29.2.1
libphonenumber-js (npm) ^1.10.13
lottie-react-native (npm) ^6.4.0
mindbox-sdk (npm) ^2.13.4
mixpanel-react-native (npm) ^3.0.8
murmurhash (npm) ^2.0.0
number-to-bn (npm) ^1.7.0
patch-package (npm) ^6.4.7
plist (npm) ^3.0.4
postinstall-postinstall (npm) ^2.1.0
punycode (npm) ^2.3.1
qrcode (npm) ^1.5.1
qs (npm) ^6.10.5
react (npm) 18.2.0
react-dom (npm) 18.2.0
react-i18next (npm) ^11.15.3
react-native (npm) 0.72.6
react-native-appsflyer (npm) ^6.15.1
react-native-ble-plx (npm) ^2.0.3
react-native-blurhash (npm) ^1.1.10
react-native-bouncy-checkbox (npm) ^2.1.9
react-native-chart-kit (npm) ^6.12.0
react-native-collapsible (npm) ^1.6.0
Files by Type (count)
Other (.png)
737
TypeScript
664
TSX
421
Other (.svg)
183
Other (.webp)
52
JSON
49
Java
29
XML
21
Other (.patch)
14
Swift
8
C/C++ Header
7
Other (no ext)
5
Files by Type (size)
Other (.png)
20MB
Other (.webp)
6MB
Other (.cjs)
4MB
JSON
4MB
TSX
2MB
TypeScript
2MB
Lock File
568KB
Other (.svg)
350KB
Other (.jpg)
309KB
Other (.jpeg)
236KB
Java
129KB
Other (.pbxproj)
68KB

The LLM identified 3 files worth highlighting for reuse:

Builds TonConnect proof messages (including Solana support) using a chain‑agnostic interface. It encapsulates address derivation, domain binding, and cryptographic signature packing into a single, testable function. This pattern is directly reusable for any TonConnect integration and demonstrates clear separation of protocol logic from UI.

file: app/engine/tonconnect/ConnectReplyBuilder.ts ↗ | tags: #ton-connect #proof-signing #reusable-library

Provides a generic wrapper around Automerge CRDT for syncing JSON‑serializable values to a cloud endpoint. It handles encryption, decryption, and automatic conflict resolution via a WebSocket subscription. The pattern is reusable for any collaborative or multi‑device state that requires offline‑first sync, not just wallet metadata.

file: app/engine/cloud/AutomergeValue.ts ↗ | tags: #cloud-sync #crdt #conflict-resolution

A pure function that scrubs sensitive data (seed phrases, private keys, hex/base64/base58 strings) from error logs before reporting. It uses configurable thresholds to avoid false positives and is thoroughly tested. This pattern is directly applicable to any application that needs to prevent credential leakage in error telemetry.

file: app/fragments/secure/utils/sanitizeErrorData.ts ↗ | tags: #security #error-sanitization #pii-scrubbing
Last analyzed: 2026-09-25 23:21:43.669375
Next check: 2026-10-02 23:21:43.604010
$ submit: