/fedimint-web-wallet

A fedimint web wallet using Chaumian Ecash to custody and transact bitcoin privately

Primary LanguageTypeScript

🌐 Fedimint Web Wallet

Are you a privacy-conscious person who wants to custody Bitcoin in a decentralized way?
Fedimint Web Wallet is a browser-based Bitcoin wallet built on the Fedimint Web SDK.
It enables you to custody and transact Bitcoin using Chaumian Ecash in a *federated, *privacy-preserving way β€” all without installing extra software.

πŸ” Custody Bitcoin with ease and privacy β€” you control your funds, your community, your future.


πŸ› About Fedimint

Fedimint is a modular system for building federated applications, designed to be:

  • πŸ›‘ Trust-minimized – You control your funds with federation consensus.
  • 🚫 Censorship-resistant – No single point of control.
  • πŸ‘€ Private – Transactions can’t be linked back to you.

✨ Features

  • πŸ” Discover & Join Federations
    Join a federation using an invite code/QR or discover available federations instantly.

  • πŸ‘ Preview Before Joining
    View full federation details, guardian info, and federation health.

  • πŸ’Έ Multiple Payment Methods

    • Lightning Network
    • On-chain Bitcoin transactions
    • Ecash transactions
  • πŸ“Š Comprehensive Federation Insights
    See guardian availability, federation health, and service status.

  • 🌐 Multi-Federation Support
    Join and manage multiple federations at once.

  • πŸ“œ Transaction Management
    View full transaction history, manage invoices (paid & pending), and export transactions.

  • β™» Backup & Recovery
    Securely backup and restore your wallet.

  • πŸ”— NIP-47 Integration (Nostr Wallet Connect)
    Connect your client to the wallet via NWC URI to send and receive payments.

  • βš™ Other useful features:

    • Auto nostr payments, auto withdrawal to an external address
    • Enabling GeoLocation, themes, developer mode according to preferences
    • Change the display currency, export transactions, setting a invoice desription

πŸ›  Technical Stack

  • ⚑ The project uses Vite + React + Typescript.
  • 🏦 Fedimint-web-sdk is used for interacting with the fedimint.
  • πŸ”Œ NDK for NWC integeration
  • πŸ“¦ Redux is used as the primary state management library and Context API is mainly used for Fedimint sdk and NDK management.

Structure

fedimint-web-wallet/
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ Components/
β”‚   β”œβ”€β”€ context/
β”‚   β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ redux/
β”‚   β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ style/
β”‚   β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ Wallet.tsx
  • App.tsx: Root application component
  • Wallet.tsx: Core wallet UI logic
  • Components: The component folder contains all of the UI components(Activities,AddFederation,Header...)
  • Pages: The Pages folder contains all the of the pages and tabs of the main wallet(JoinFederation,Ecash,Settings...)
  • Redux: Redux files manages the fedimint web sdk and NDK initialization and thier working
    • WalletManger manages the switching of the federations, loading wallet data, initializing of the wallet and giving wallet instance to their childrens and with some other functionalities
    • Nostr context runs in the background without blocking the wallet functionalities or UI renderings like intializing NDK, connecting to relays, setting up subscriptions for the following nostr events(get_info, pay_invoice, make_invoice, get_balance, list_transactions, lookup_invoice, notifications, payment_sent, payment_received)
  • Services: The services folder contains the helper functions and the main fedimint web sdk rpc methods.

πŸš€ Running the application

🀝 Contributions

Before contributing to the project please go through our contribution guidelines Contribution.md