An open API service indexing awesome lists of open source software.

https://github.com/grimm-labs/grimm-mobile-app

Grimm App - Bitcoin Wallet
https://github.com/grimm-labs/grimm-mobile-app

bdk bitcoin-wallet breez-sdk lightning-network react react-native tailwindcss

Last synced: 2 months ago
JSON representation

Grimm App - Bitcoin Wallet

Awesome Lists containing this project

README

          

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![React Native](https://img.shields.io/badge/React%20Native-0.73-blue.svg)](https://reactnative.dev/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)


Grimm App Logo

Grimm App is a self-custodial Bitcoin wallet that empowers users to take full control of their Bitcoin while maintaining ease of use. Built on the principle that "not your keys, not your coins," Grimm App ensures that you—and only you—have access to your funds at all times.

Currently supporting Lightning payments via the Breez SDK Spark, Grimm App is actively expanding to include comprehensive on-chain Bitcoin capabilities. Our mission is to create a wallet that serves both newcomers to Bitcoin and experienced users who demand advanced features and maximum control.

Following the cypherpunk ethos, Grimm App is fully open-source, auditable, and trustless. We believe that financial sovereignty should be accessible to everyone, and that transparency in code is essential for building trust in Bitcoin software.


Grimm App screenshots poster

## Why Grimm App?

**Self-Custody First**: Unlike custodial wallets and exchanges, Grimm App generates and stores your private keys exclusively on your device. This means no third party can freeze, confiscate, or lose your Bitcoin.

**Lightning Native**: Experience instant Bitcoin payments with minimal fees through our Lightning Network integration powered by Breez SDK Spark. Send and receive payments in seconds, not hours.

**Future-Ready**: With upcoming support for on-chain Bitcoin, Grimm App is designed to be your all-in-one Bitcoin solution, capable of handling everything from small everyday payments to large, secure transfers.

**Privacy-Focused**: We don't collect user data, don't require KYC, and implement best practices for maintaining your financial privacy.

**Open Source**: Every line of code is open for inspection. We believe in radical transparency and community-driven development.

## Current Features

### Lightning Payments (Breez SDK Spark)

**Instant Transactions via Breez SDK Spark**

- Send and receive Bitcoin instantly over the Lightning Network (powered by Breez SDK Spark)
- Minimal transaction fees, typically less than a penny
- Perfect for everyday purchases and micro-transactions
- QR code scanning for easy payment initiation

**Lightning Benefits**

- Near-instant settlement (payments confirm in seconds)
- Extremely low fees regardless of Bitcoin network congestion
- Enhanced privacy through payment channel routing
- Scalable solution for global Bitcoin adoption

### Wallet Basics

**Non-Custodial Architecture**

- Private keys generated securely on your device using industry-standard cryptographic libraries
- Keys never transmitted over the network or stored on external servers
- You maintain complete control over your Bitcoin at all times

**User-Friendly Interface**

- Clean, intuitive design suitable for both beginners and experts
- Clear transaction history with detailed information
- Real-time balance updates
- Support for both Bitcoin and Satoshi denominations

### Wallet Security

**Multi-Layer Security Approach**

- Private keys stored in platform-specific secure storage (Keychain on iOS, Keystore on Android)
- Keys only accessed when absolutely necessary (signing transactions, viewing backup)

## Core Dependencies and Technology Stack

### Bitcoin and Lightning

- **[Breez SDK Spark](https://github.com/breez/spark-sdk)**: Lightning Network implementation (used for all Lightning features)

### Mobile Development

- **[React Native](https://reactnative.dev/)**: Cross-platform mobile framework
- **[TypeScript](https://www.typescriptlang.org/)**: Type-safe JavaScript for robust code
- **[Obytes Starter](https://starter.obytes.com)**: Production-ready React Native template

### State Management and Data

- Modern React patterns with hooks and context
- Persistent storage for wallet data and preferences
- Secure storage for sensitive cryptographic material

## Requirements

### Development Environment

**General Requirements**

- [React Native dev environment](https://reactnative.dev/docs/environment-setup) - Follow the "React Native CLI Quickstart" guide
- [Node.js LTS release](https://nodejs.org/en/) (v18 or higher recommended)
- [Git](https://git-scm.com/) for version control
- [Pnpm](https://pnpm.io/installation) for fast, efficient package management

**Platform-Specific Requirements**

_macOS (for iOS development)_

- Xcode 14 or higher
- CocoaPods (`sudo gem install cocoapods`)
- [Watchman](https://facebook.github.io/watchman/docs/install#buildinstall) for file watching
- iOS Simulator or physical iOS device

_Windows/macOS/Linux (for Android development)_

- Android Studio with Android SDK
- Java Development Kit (JDK) 11 or higher
- Android emulator or physical Android device
- [Watchman](https://facebook.github.io/watchman/docs/install#buildinstall) (macOS/Linux only)

## Getting Started

### Installation

1. **Clone the repository**

```sh
git clone https://github.com/grimm-labs/grimm-mobile-app.git
cd grimm-mobile-app
```

2. **Install dependencies**

```sh
pnpm install
```

3. **Environment Configuration**

```sh
cp .env.example .env
# Edit .env with your configuration
```

### Running the App

**iOS Development**

```sh
# Run on iOS simulator
pnpm run ios
```

**Android Development**

```sh
# Run on Android emulator or connected device
pnpm run android
```

## Roadmap

Suggestions and contributions to this roadmap are welcome through GitHub issues and discussions.

### Phase 1: Lightning Foundation (Current)

- [x] Lightning Network integration via Breez SDK Spark
- [x] Send and receive Lightning payments
- [x] QR code scanning and generation
- [x] Basic wallet security with secure storage
- [x] Transaction history and balance display
- [ ] LNURL support (pay, withdraw, auth)
- [ ] Lightning address support

### Phase 2: On-Chain Bitcoin (In Progress)

- [ ] Native Bitcoin wallet with bech32 addresses
- [ ] Custom fee selection and RBF support
- [ ] Transaction labeling for privacy

### Phase 4: Advanced Features

- [ ] Watch-only wallet support
- [ ] Hardware wallet integration (Coldcard, Ledger, Trezor)
- [ ] Multi-signature wallet support (future)

### Phase 5: Privacy and Security Enhancements

- [ ] Tor support for network privacy
- [ ] Coin mixing integration (Whirlpool, JoinMarket)
- [ ] Encrypted cloud backups with key server
- [ ] Biometric authentication
- [ ] Enhanced transaction privacy features

### Phase 6: Integration and Interoperability

- [ ] BOLT12 offers support
- [ ] Nostr integration for social payments

### Long-Term Vision

- [ ] Advanced scripting support
- [ ] Fedimint integration
- [ ] Cashu token support

### Security Best Practices

**Key Management**

- Keys generated using cryptographically secure random number generation
- BIP39 standard for mnemonic phrases

**Secure Storage**

- Platform-specific secure enclaves (iOS Keychain, Android Keystore)
- Encryption at rest for all sensitive data
- Memory protection to prevent key extraction
- Secure deletion of sensitive data

**Operational Security**

- Regular security audits (planned)
- Responsible disclosure policy
- Community code review

### Threat Model

**What Grimm App Protects Against**

- ✅ Theft of Bitcoin by malicious apps on your device
- ✅ Server-side theft (we don't hold your keys)
- ✅ Man-in-the-middle attacks (cryptographic verification)
- ✅ Phishing attacks (warnings on suspicious addresses)
- ✅ Accidental loss through proper backup procedures

**What Grimm App Cannot Protect Against**

- ❌ Malware with root/jailbreak access
- ❌ Loss of seed phrase without backup
- ❌ Social engineering attacks
- ❌ Compromised device before wallet installation

**User Responsibilities**

- Keep your device updated with latest security patches
- Backup your seed phrase securely (offline, physically)
- Never share your seed phrase with anyone
- Verify recipient addresses before sending
- Be cautious of phishing attempts