Inspiration

As the Nostr ecosystem grows, so does the demand for smooth, native Lightning integration within its apps. Nostr Wallet Connect (NWC), defined in NIP-47, provides a powerful way to connect wallets to Nostr clients — but there are very few wallets that currently support it.

From my own experience, I had only used one such wallet that supported NWC (alby), and I felt there was a strong need for a self-custodial, mobile-first alternative. I built Nostrpay to empower users with full control over their keys, private channels, and seamless NWC connectivity — all while prioritizing security and decentralization.

What it does

Nostrpay is a self-custodial Bitcoin Lightning wallet mobile app with full support for Nostr Wallet Connect (NWC), following the NIP-47 standard.

Nostrpay

How we built it

  • Flutter: To build the UI
  • Lightning Development Kit (LDK): Runs a Lightning node on the device, giving full wallet functionalities
  • Olympus LSP API: For getting just-in-time (JIT), 0-conf payment channels
  • nwc_wallet package: Implements the Nostr Wallet Connect (NWC) protocol
  • Secure Storage: Mnemonic and wallet data are stored securely using KeyStore (Android) and Keychain (iOS).
  • NIP-06: Used to derive both wallet and NWC keys from a single mnemonic, so users don’t need to manage multiple keypairs.

Challenges we ran into

  • Olympus LSP Integration: Understanding Olympus’s API structure (fee endpoints, channel proposals, etc.) and fitting it into the flow took significant effort.
  • Testnet Funding Issues: During testing, the mutinynet faucet stopped working and returned "no payment route" errors, which blocked progress temporarily. I eventually transferred funds manually from another wallet on my phone to continue testing.

Accomplishments that we're proud of

Everything

Demo Video

https://youtu.be/VAnNt-Th8No?si=ld6Ro6-lgCx_N7gO

Links

Built With

Share this project:

Updates