A production-quality React Native Expo application for interacting with the Stellar Testnet. This mobile wallet allows users to securely generate and store keypairs, view XLM balances, send and receive Testnet XLM, view transaction history, manage contacts, and includes a placeholder for a Soroban Savings Vault.
- Wallet Management: Create a new Stellar Testnet wallet or import an existing one using a secret key. Keys are securely stored on the device using
expo-secure-store. - Balance & Activity: View your real-time XLM balance and recent transactions.
- Send & Receive: Send XLM to any Stellar address. Receive XLM easily by sharing your auto-generated QR code.
- Address Book: Save frequently used addresses in your contacts for quick access.
- Soroban Vault (Mock): A UI placeholder demonstrating where future Soroban smart contract integrations (like a savings vault) would live.
- Premium UI: Clean, modern fintech aesthetic with dark mode support.
- Framework: React Native with Expo (Managed Workflow)
- Navigation: Expo Router (File-based routing)
- State Management: Zustand
- Storage:
expo-secure-store,@react-native-async-storage/async-storage - Blockchain:
@stellar/stellar-sdk(with required React Native polyfills)
- Node.js (v18+ recommended)
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - Expo Go app on your physical device, or an iOS Simulator / Android Emulator.
-
Clone the repository (if applicable) or navigate to the project directory:
cd stellar-pocketpay-mobile -
Install dependencies:
npm install --legacy-peer-deps
(Note:
--legacy-peer-depsis required due to React 19 peer dependency conflicts in some React Native libraries) -
Environment Variables: The project includes a
.env.examplefile. Copy it to.env:cp .env.example .env
The default values are configured for the Stellar Testnet.
Start the Expo development server:
npm startPress i to open in iOS simulator, a to open in Android emulator, or scan the QR code with the Expo Go app on your physical device.
The Stellar SDK is designed for Node.js and Browser environments. To make it work in React Native, this project uses specific polyfills (buffer, react-native-get-random-values, events, etc.) which are configured in shim.js and imported at the very top of app/_layout.tsx.
When you create a new wallet, it will have a balance of 0 XLM and won't exist on the ledger until funded. To fund it:
- Copy your new Public Key from the app.
- Go to the Stellar Laboratory Friendbot.
- Paste your Public Key and click "Get test network XLM".
MIT