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.
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.
-
π 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
- β‘ 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.
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.
-
Clone the repository
git clone https://github.com/Harshdev098/fedimint-web-wallet.git
-
Install the dependencies
npm install
-
Start the app in development mode
npm run dev
Before contributing to the project please go through our contribution guidelines Contribution.md