A beautiful, non-custodial Bitcoin Lightning wallet for iOS and Android.
- β‘ Instant Lightning Payments - Send and receive Bitcoin in seconds
- π Non-Custodial - You control your keys, your coins
- π‘οΈ Secure Backups - Automatic encrypted channel state backups
- π Multi-LSP Support - Redundant liquidity providers for reliability
- π¨ Beautiful UI - Cosmic dark theme with smooth animations
- π± Cross-Platform - iOS and Android from a single codebase
Starr is built with Lightning Network integration using:
- LDK (Lightning Development Kit) via LDK Node - Primary implementation
- LND (Lightning Network Daemon) - Fallback option for remote nodes
- REST API mode: Connect to LDK Node running as a service
- Native mode: Embedded LDK Node (planned, requires native modules)
- Non-custodial Lightning wallet
- Channel management via LSP
- Invoice creation and payment
- Payment history tracking
- Secure key management
- React Native with Expo
- LDK (Lightning Development Kit) via LDK Node for Lightning Network
- LND as fallback option
- Zustand for state management
- Expo Router for navigation
- TypeScript for type safety
- Node.js 18+
- npm or yarn
- Expo CLI
- iOS Simulator (Mac) or Android Emulator
# Clone the repository
git clone https://github.com/yourusername/starr.git
cd starr
# Install dependencies
npm install
# Start the development server
npm start# iOS (requires Mac)
npm run ios
# Android
npm run android# Install EAS CLI
npm install -g eas-cli
# Login to Expo
eas login
# Build for iOS
eas build --platform ios
# Build for Android
eas build --platform androidstarr/
βββ app/ # Expo Router screens
β βββ (tabs)/ # Tab navigation screens
β βββ onboarding/ # Onboarding flow
β βββ ... # Modal screens
βββ src/
β βββ components/ # Reusable components
β β βββ ui/ # Base UI components
β β βββ wallet/ # Wallet-specific components
β βββ services/ # Core services
β β βββ lnd/ # LND integration
β β βββ keychain/ # Secure key storage
β β βββ backup/ # Backup management
β β βββ lsp/ # LSP management
β βββ stores/ # Zustand state stores
β βββ theme/ # Design system
β βββ types/ # TypeScript types
β βββ utils/ # Utility functions
βββ assets/ # Images and fonts
Starr uses LDK (Lightning Development Kit) via LDK Node as the primary Lightning implementation.
-
Set up and run LDK Node as a separate service (see LDK Node documentation)
-
Create a
.envfile in the root directory:
# .env file - LDK Node REST API mode
EXPO_PUBLIC_LDK_REST_URL=http://localhost:3000 # Your LDK Node REST API URL
EXPO_PUBLIC_LDK_API_KEY=your_api_key_here # Optional, if LDK Node requires auth
EXPO_PUBLIC_LDK_NETWORK=testnet # bitcoin, testnet, signet, or regtest- Restart your development server after adding the configuration
For Start9, Umbrel, or other LND nodes, use the LND Connect URL:
# .env file - LND mode with LND Connect URL (Start9/Umbrel)
EXPO_PUBLIC_LND_ENABLED=true
EXPO_PUBLIC_LND_CONNECT_URL=lndconnect://your-host:port?macaroon=...&cert=...Or use manual REST API configuration:
# .env file - LND mode with manual config
EXPO_PUBLIC_LND_ENABLED=true
EXPO_PUBLIC_LND_REST_URL=https://your-lnd-node:8080
EXPO_PUBLIC_LND_MACAROON=your_macaroon_hex
EXPO_PUBLIC_LND_CERT=your_cert_base64 # Optional for self-signed certs
EXPO_PUBLIC_NETWORK=bitcoin # or 'testnet' for testingFor Start9 specifically:
- Open your Start9 Embassy dashboard
- Navigate to your LND service
- Copy the LND Connect URL from the "Connect" section
- Paste it as
EXPO_PUBLIC_LND_CONNECT_URLin your.envfile
Native LDK integration (embedded in the app) is planned but requires native module development for iOS and Android. This will provide better performance and offline capabilities.
The Breez SDK implementation has been archived in the archive/breez-sdk-implementation branch.
- β SDK initialization
- β Balance retrieval
- β Node information
- β Invoice creation and parsing
- β Payment history
- β LSP information and selection
- β Node synchronization
- β Backup functions
- β SDK shutdown
-
Running Tests:
- Tap "Run All Tests" to execute the full test suite
- Or use individual test buttons for specific functions
- Results show success/error status with detailed data
-
Troubleshooting:
- If tests show "Mock Mode", rebuild the app with native modules:
eas build --profile development --platform ios
- If API key tests fail, verify your
.envfile is properly configured - Check console logs for detailed error messages
- If tests show "Mock Mode", rebuild the app with native modules:
- iOS:
com.starwallet - Android:
com.starwallet
- Seed phrases are stored in platform-native secure storage
- iOS: Keychain Services with Secure Enclave
- Android: Keystore with hardware-backed security
- Automatic Cloud Backup - Encrypted channel state to iCloud/Google Drive
- Local Backup - Encrypted local file backups
- Manual Export - User-controlled backup export
- NEVER share your recovery phrase
- Store your 24-word backup in a secure, offline location
- Enable biometric authentication for added security
- Keep auto-backup enabled to prevent fund loss
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
- Website: starr.app
- Support: support@starr.app
- Twitter: @StarrWallet
Built with β‘ by the Starr team
