Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SovranBitcoin/Sovran

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1,167 Commits

Repository files navigation

Sovran

CI

https://sovran.money

Features

Wallet

  • Send and receive Bitcoin via Cashu ecash tokens
  • Lightning Network payments and invoices
  • Multi-account support with swipeable account pager
  • Real-time balance with sats/fiat toggle

Lightning Address

  • Claim a custom Lightning address username
  • Choose between npubx.cash and sovran.money domains
  • Real-time availability checking across all domains

Multi-Currency Display

  • Display balances in USD, EUR, GBP, or sats
  • Real-time fiat conversion with price caching
  • Quick-switch currency pill in the header

Transaction Sources

  • Every transaction shows how it started — QR scan, NFC tap, clipboard paste, or deeplink
  • Swaps, pending sends, and cancelled transactions all live in one unified timeline

transaction-sources

Transaction Filters

  • Filter by currency, type (lightning or ecash), direction, status, and month
  • Horizontal month selector for quick time navigation

filters

Transaction Timelines

  • Live timeline per transaction that updates as state changes — step by step
  • Mint quotes counting down to expiry, sends progressing through preparation to finalization, melts moving from pending to paid

HistoryEntryTimeline

P2PK

  • Generate or import locking keys (nsec or raw hex)
  • Keys derived from your seed using a BIP-39 path
  • Quick Access shows your latest locking key on the receive screen

p2pk

Themes

  • 37 themes including color palettes and background image wallpapers
  • Pick a color or a background image — applies everywhere, instantly

themes

Know Your Mint

  • Mints accessible from the payments page — tap to message them over Nostr
  • Audit any mint through the Cashu Auditor: lightning node connectivity, success rates, average swap times, and community ratings

kym

User Profiles

  • Tap any user to see their profile — reputation score, follower count, and most-followed connections
  • Powered by Nostr social graph data

Nostr Direct Messages

  • Encrypted peer-to-peer messaging rebuilt on NIP-17 gift-wrapped DMs
  • Send Cashu tokens and payment requests inline in conversations

Contacts

  • Nostr-based contact system on the payments page
  • Search for users by npub, NIP-05, or name
  • Recent conversations with message previews

profiles+messages

BTCMaps

  • Built-in map (powered by BTCMap) shows merchants near you that accept Bitcoin
  • Filter by category — food, retail, ATMs, accommodation — and tap for details
  • Efficient map clustering with viewport-based rendering

maps

Pending Ecash Sweeper

  • Explore page shows total unspent balance across all pending sends
  • One tap starts a sweep — rolling back each transaction and reclaiming tokens, grouped by mint

pending-ecash-sweeping

Mint Swapper / Rebalancer

  • Rebalance ecash across mints without doing the transfers yourself
  • The health page monitors your distribution drift and flags when things are off
  • Set target distribution percentages per mint with sliders
  • Supports middleman routing chains for mints that can't swap directly

rebalancing

Wallet Health

  • Balance distribution monitoring card on the explore page
  • Shows distribution status, pending transactions, and rebalance suggestions
  • Hero transition animation from card to full modal

Mint Selector

  • Browse community-recommended mints discovered via Nostr or the Sovran API
  • Paste a URL manually to add any mint
  • Every mint shows its KYM score before you commit

mint-selection

Swap Routing

  • Configure routing parameters for mint swaps
  • Set max hops, max fee percentage, minimum success rate, and trust mode

Location Stamps

  • Opt-in location stamps — tag where a transaction happened
  • Stored locally, shown on a map with a privacy-first "tap to reveal" blur
  • Off by default

location-stamps

Routstr

  • Built-in AI chat through Routstr
  • Pick from dozens of models across providers — each one shows exactly what it costs in sats per token
  • No subscription — send ecash to fund your balance
  • Session management with search, model switching, and anonymous mode

routstr

Payment Requests

  • Cashu payment requests (NUT-18) — send ecash directly over Nostr
  • No Lightning invoice needed — just a request, a tap, and it's done

NFC

  • NFC tap payments — scan NFC tags to pay Lightning invoices or receive ecash
  • Includes rollback handling, robust mint selection, and POS payment recovery

QR Scanner

  • Full-featured QR code scanner with torch toggle
  • Import QR codes from your photo library — pick an image and the app decodes it automatically via expo-camera scanFromURLAsync
  • UR code support with multi-frame progress tracking
  • Clipboard paste fallback for quick input

Emoji Token Encoding

  • Encode ecash tokens with Bitcoin-themed emojis for creative sharing
  • Select an emoji, token is encoded, copied to clipboard automatically

Deep Linking

  • cashu:// and sovran:// URL schemes for seamless payment handling
  • Automatically routes to the right screen based on link content

Passcode Lock

  • 4-digit PIN code for app-level protection
  • Custom numeric keyboard with passcode gate on launch

Wallet Recovery

  • Restore your wallet from a BIP-39 seed phrase
  • Sweeps all known mints to recover ecash proofs
  • Progress tracking per mint during recovery

Security & Privacy

  • BIP-39 mnemonic seed phrase generation and storage
  • NIP-06 deterministic key derivation for Nostr identity
  • Encrypted local storage via expo-secure-store
  • No data collection — privacy-first, open source

Scripts

Development

yarn start # Start Expo development server
yarn ios # Run on iOS simulator/device
yarn android # Run on Android emulator/device

Building

yarn prebuild # Prebuild native projects
yarn build:ios # Build iOS for production (EAS)
yarn build:dev:ios # Build iOS for development (EAS)
yarn build:android:apk # Build Android APK (preview)

Submitting

yarn submit:ios # Submit iOS build to App Store
yarn submit:android # Submit Android build to Play Store

Code Quality

yarn lint # Run ESLint
yarn type-check # Run TypeScript type checking
yarn pretty # Format code with Prettier
yarn pretty:check # Check formatting without writing
yarn knip # Find unused exports/dependencies

Testing

yarn maestro # Run Maestro UI tests

Technical Architecture

Code Structure

React Native app built with Expo, using file-based routing via Expo Router.

  • Frontend: React Native with Expo
  • Styling: Tailwind CSS via NativeWind
  • State Management: Zustand (migrating from Redux)
  • Cashu Operations: Coco-Cashu for ecash processing
  • Nostr Integration: NDK for decentralized communication
  • Animations: Reanimated with hero transitions

Protocol Support

  • Cashu NUTs — NUT-00 through NUT-13, NUT-17, NUT-18, NUT-23
  • Lightning Network — BOLT11 invoices
  • Nostr — NIP-04, NIP-05, NIP-06, NIP-17, NIP-19, NIP-44, NIP-59
  • BIP-39 / BIP-32 — Hierarchical deterministic wallets

Contributing

We welcome contributions! See our GitHub repository for issues, feature requests, and code contributions.

Support

  • GitHub Issues — Bug reports and feature requests
  • Nostr — Direct messaging via Nostr protocol
  • Twitter@KevinKelbie

About

A mobile Cashu wallet

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

AltStyle によって変換されたページ (->オリジナル) /