A self-custodial Bitcoin wallet for Android with Nostr protocol integration.
- Bitcoin-only wallet using Bitcoin Dev Kit (BDK)
- Nostr protocol integration for decentralized communication
- NomadServer protocol for wallet state synchronization
- Self-custodial - You control your keys
- Open source - Fully transparent code
- Android-first - Optimized for Android 7.0+ (API 24+)
bdk-rn- Bitcoin Dev Kit for React Native@react-native-async-storage/async-storage- Secure local storagereact-native-fs- File system access
nostr-tools- Nostr protocol implementation@noble/secp256k1- Cryptographic operations@scure/base- Encoding utilitiesreact-native-get-random-values- Secure randomness
@react-navigation/native- Navigation frameworkreact-native-vector-icons- Icon libraryreact-native-qrcode-svg- QR code generationreact-native-vision-camera- Camera for QR scanning
src/
├── services/
│ ├── wallet/ # BDK wallet management
│ ├── nostr/ # Nostr client & NomadServer protocol
│ └── storage/ # Secure key storage
├── screens/
│ ├── Setup/ # First-run wallet creation
│ ├── Home/ # Main wallet screen
│ ├── Send/ # Send Bitcoin
│ ├── Receive/ # Receive Bitcoin
│ └── Settings/ # App settings
├── components/
│ ├── common/ # Reusable UI components
│ └── wallet/ # Wallet-specific components
├── types/
│ ├── wallet.ts # BDK & Bitcoin types
│ ├── nostr.ts # Nostr protocol types
│ └── nomadserver.ts # Server protocol types
├── utils/
│ └── constants.ts # App constants
└── assets/ # Images, fonts
- Node.js >= 18
- npm >= 8
- Android Studio
- Android SDK (API 24+)
- Java Development Kit (JDK) 17
- Clone the repository:
git clone <repository-url>
cd nomad-wallet- Install dependencies:
npm install- Install Android dependencies:
cd android && ./gradlew cleannpm run androidOr open the android folder in Android Studio and run from there.
npm startThe project uses TypeScript with strict mode enabled. Type definitions are located in src/types/.
npm run lintnpm run tsc- Private keys are stored encrypted in secure storage
- Mnemonic phrases are never sent over the network
- All Bitcoin operations happen on-device
- Nostr keys are generated securely using proper entropy
NomadServer is a protocol for synchronizing Bitcoin wallet state over Nostr relays. It allows:
- Encrypted wallet state backup
- Multi-device synchronization
- Privacy-preserving balance updates
- Transaction coordination
- Basic project setup
- BDK wallet integration
- Nostr client implementation
- NomadServer protocol
- QR code scanning
- Transaction history
- Lightning Network support (future)
- iOS support (future)
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
MIT License - see LICENSE file for details
This is experimental software. Use at your own risk. Always backup your mnemonic phrase securely.
For issues and questions, please open a GitHub issue.