Secure. Non-custodial. Institutional-grade mobile Ethereum management.
- Secure Key Management: Seed phrase generation and encrypted local storage via iOS/Android Keychain.
- Intuitive Dashboard: Portfolio overview with real-time balance tracking and glassmorphic UI cards.
- Effortless Transfers: Send ETH and ERC-20 tokens with QR code scanning and gas estimaton.
- Instant Receiving: Modern Receive screen with high-resolution QR codes and one-tap address copying.
- Live Market Data: Real-time coin price charts powered by optimized WebSocket streams.
- Token Exchange: Seamless in-app token swap functionality with liquidity analysis.
- High Performance: Silky-smooth animations powered by React Native Reanimated.
| API | Purpose | Endpoint | Key Required |
|---|---|---|---|
| Alchemy RPC | Ethereum node provider for all blockchain interactions (balance, gas, transactions) | https://eth-sepolia.g.alchemy.com/v2/{KEY} |
✅ Yes — EXPO_PUBLIC_ALCHEMY_KEY |
| CoinGecko API | Live crypto prices (ETH, BTC, USDT, SOL, MATIC) with 24h change | https://api.coingecko.com/api/v3/simple/price |
❌ Free, no key |
| CoinGecko News | Latest crypto news feed | https://api.coingecko.com/api/v3/news |
❌ Free, no key |
| 0x Swap API | DEX aggregator for token swaps (Ethereum, Polygon, Arbitrum) | https://api.0x.org/swap/v1/ |
❌ Free, no key |
| RSS2JSON | Fallback news feed from CoinTelegraph & Bitcoinist RSS | https://api.rss2json.com/v1/api.json |
❌ Free, no key |
Create a .env file in the root directory:
EXPO_PUBLIC_ALCHEMY_KEY=your_alchemy_key_here
EXPO_PUBLIC_WEB_SALT=your_salt_hereGet your free Alchemy API key at alchemy.com — supports Sepolia testnet, Ethereum, Polygon, and Arbitrum mainnet.
| Network | Type | RPC (with Alchemy) | RPC (fallback) |
|---|---|---|---|
| Sepolia | Testnet | eth-sepolia.g.alchemy.com |
rpc.sepolia.org |
| Ethereum | Mainnet | eth-mainnet.g.alchemy.com |
cloudflare-eth.com |
| Polygon | Mainnet | polygon-mainnet.g.alchemy.com |
polygon-rpc.com |
| Arbitrum | Mainnet | arb-mainnet.g.alchemy.com |
arb1.arbitrum.io/rpc |
| Library | Purpose |
|---|---|
| ethers.js v5 | Secure Ethereum node interactions and cryptography |
| expo-secure-store | AES-256 encryption for private keys and sensitive data |
| React Navigation | Flexible stack and tab navigation architecture |
| react-native-reanimated | Fluid, 60fps micro-interactions and transitions |
| WebSocket (ws) | Low-latency live price feeds for market data |
| expo-camera | Native QR code scanning and camera integration |
| TypeScript | Type-safe development and improved code maintainability |
- Node.js (v18 or newer)
- npm or yarn
- Expo Go app installed on your physical device
-
Clone the repository
git clone https://github.com/0xMayurrr/CryptoWallet.git cd CryptoWallet -
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory:EXPO_PUBLIC_ALCHEMY_KEY=your_alchemy_key_here EXPO_PUBLIC_WEB_SALT=your_salt_here
Get your free Alchemy key at alchemy.com
-
Start Development
npx expo start
To generate a production-ready Android APK using EAS Build:
-
Install EAS CLI
npm install -g eas-cli
-
Login to Expo
eas login
-
Build Android APK
eas build -p android --profile production
src/
├── assets/ # Static assets (images, icons, fonts)
├── components/ # Reusable UI components and animated wrappers
├── constants/ # Theme tokens, API endpoints, and configuration
├── screens/ # Main application screens (Home, Swap, Send, Recieve)
├── services/ # Business logic, Web3 interactions, and WebSocket handlers
├── store/ # Global state management and Context providers
└── utils/ # Helper functions, formatting, and validation
CryptoWallet is built on the principle of Your Keys, Your Crypto.
- Seed Phrases: Generated locally on-device. They are never transmitted over the network or stored in plaintext.
- Encrypted Storage: All private keys and seeds are stored using
expo-secure-store, which leverages Android Keystore and iOS Keychain. - PIN Authentication: Local PIN protection ensures that even if a device is unlocked, the wallet remains secure.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Made with ❤️ by 0xMayurrr




