Skip to content

svcho/Mango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mango

Mango is a non-custodial Bitcoin wallet built with SwiftUI. It is focused on self-custody, simple UX, and local-first security controls.

Status: pre-release.

Highlights

  • Non-custodial wallet model (you control keys and recovery phrase).
  • Bitcoin-only workflow with send/receive, fee estimation, and sync.
  • Local biometric/device authentication for sensitive actions.
  • Encrypted key material and encrypted recovery-phrase export support.
  • Background sync and local transaction metadata (notes, tags).
  • English and German localization.

Screenshots

Home

Mango Home Screen

Send

Mango Send Screen

Receive

Mango Receive Screen

Settings

Mango Settings Screen

Security and Privacy

  • Private key material is encrypted at rest using device-secured storage.
  • Recovery phrase storage uses encrypted local persistence and Keychain-backed secrets.
  • Telemetry is opt-in and defaults to disabled.
  • No hardcoded API credentials are required to run the app.
  • CI now includes automated secret scanning (.github/workflows/secret-scan.yml).

If you find a vulnerability, please report it privately to the maintainers.

Architecture

The project follows MVVM with service-based boundaries and dependency injection.

  • Mango/Mango/AppContainer.swift: dependency wiring and service composition.
  • Mango/Mango/Features/: SwiftUI views + view models per feature.
  • Mango/Mango/Services/: wallet, networking, sync, key management, telemetry.
  • Mango/Mango/Domain/: domain models and wallet/network configuration.
  • Mango/MangoTests/: unit tests for core services.

Requirements

  • Xcode 15.2 or newer (CI currently uses Xcode 15.2).
  • Swift toolchain supported by your installed Xcode.
  • iOS simulator/device runtime matching the project deployment target in Mango/Mango.xcodeproj.

Quick Start

  1. Clone the repository.
    git clone https://github.com/<your-org>/Mango.git
    cd Mango
  2. Open the project.
    open Mango/Mango.xcodeproj
  3. Let Swift Package Manager resolve dependencies.
  4. Build and run the Mango scheme.

Test and CI Commands

  • Run tests:
    xcodebuild test -project Mango/Mango.xcodeproj -scheme Mango -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest'
  • Build:
    xcodebuild build -project Mango/Mango.xcodeproj -scheme Mango -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest'

External Services and Dependencies

  • Blockchain APIs: mempool.space and blockstream.info endpoints.
  • Fiat price API: CoinGecko.
  • Major packages: GRDB, swift-bitcoin/secp256k1 stack, Swift standard ecosystem packages.

No API key setup is required for local development by default.

Public Release Hygiene

Before publishing:

  1. Run a secret scan locally and ensure CI passes secret scan checks.
  2. Confirm no credential files are present (.env, .pem, .p12, private keys).
  3. Verify telemetry default and consent behavior are unchanged.

License

Licensed under MIT. See LICENSE.

About

Simple native iOS Bitcoin wallet for single wallet users on mainnet or testnet

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors