|
1 | | -# Fedimint Web Wallet |
2 | | -A web wallet using Chaumian Ecash while giving previlige to custody and transact Bitcoin. |
| 1 | +# 🌐 Fedimint Web Wallet |
3 | 2 |
|
4 | | -## Running the application |
5 | | -Within the root folder of the repository run: `npm run dev` |
| 3 | +Are you a *privacy-conscious* person who wants to *custody Bitcoin* in a *decentralized* way? |
| 4 | +*Fedimint Web Wallet* is a browser-based Bitcoin wallet built on the [Fedimint Web SDK](https://github.com/fedimint/fedimint-web-sdk). |
| 5 | +It enables you to *custody* and *transact Bitcoin* using *Chaumian Ecash* in a *federated, **privacy-preserving* way — all *without installing extra software*. |
| 6 | + |
| 7 | +> 🔐 Custody Bitcoin with ease and privacy — you control your funds, your community, your future. |
| 8 | +
|
| 9 | +--- |
| 10 | + |
| 11 | +## 🏛 About Fedimint |
| 12 | + |
| 13 | +[Fedimint](https://github.com/fedimint/fedimint) is a *modular system* for building federated applications, designed to be: |
| 14 | + |
| 15 | +- *🛡 Trust-minimized* – You control your funds with federation consensus. |
| 16 | +- *🚫 Censorship-resistant* – No single point of control. |
| 17 | +- *👤 Private* – Transactions can’t be linked back to you. |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## ✨ Features |
| 22 | + |
| 23 | +- 🔍 *Discover & Join Federations* |
| 24 | + Join a federation using an invite code/QR or discover available federations instantly. |
| 25 | + |
| 26 | +- 👁 *Preview Before Joining* |
| 27 | + View full federation details, guardian info, and federation health. |
| 28 | + |
| 29 | +- 💸 *Multiple Payment Methods* |
| 30 | + - Lightning Network |
| 31 | + - On-chain Bitcoin transactions |
| 32 | + - Ecash transactions |
| 33 | + |
| 34 | +- 📊 *Comprehensive Federation Insights* |
| 35 | + See guardian availability, federation health, and service status. |
| 36 | + |
| 37 | +- 🌐 *Multi-Federation Support* |
| 38 | + Join and manage multiple federations at once. |
| 39 | + |
| 40 | +- 📜 *Transaction Management* |
| 41 | + View full transaction history, manage invoices (paid & pending), and export transactions. |
| 42 | + |
| 43 | +- ♻ *Backup & Recovery* |
| 44 | + Securely backup and restore your wallet. |
| 45 | + |
| 46 | +- 🔗 *NIP-47 Integration* (Nostr Wallet Connect) |
| 47 | + Connect your client to the wallet via NWC URI to send and receive payments. |
| 48 | + |
| 49 | +- ⚙ Other useful features: |
| 50 | + - Auto nostr payments, auto withdrawal to an external address |
| 51 | + - Enabling GeoLocation, themes, developer mode according to preferences |
| 52 | + - Change the display currency, export transactions, setting a invoice desription |
| 53 | + |
| 54 | +## 🛠 Technical Stack |
| 55 | + |
| 56 | +- ⚡ The project uses Vite + React + Typescript. |
| 57 | +- 🏦 [Fedimint-web-sdk](https://github.com/fedimint/fedimint-web-sdk) is used for interacting with the fedimint. |
| 58 | +- 🔌 [NDK](https://github.com/nostr-dev-kit/ndk) for NWC integeration |
| 59 | +- 📦 Redux is used as the primary state management library and Context API is mainly used for Fedimint sdk and NDK management. |
| 60 | + |
| 61 | +## Structure |
| 62 | + |
| 63 | +```plaintext |
| 64 | +fedimint-web-wallet/ |
| 65 | +├── src |
| 66 | +│ ├── assets/ |
| 67 | +│ ├── Components/ |
| 68 | +│ ├── context/ |
| 69 | +│ ├── hooks/ |
| 70 | +│ ├── pages/ |
| 71 | +│ ├── redux/ |
| 72 | +│ ├── services/ |
| 73 | +│ ├── style/ |
| 74 | +│ ├── utils/ |
| 75 | +│ ├── App.tsx |
| 76 | +│ ├── Wallet.tsx |
| 77 | + ``` |
| 78 | + |
| 79 | +- **Appp.tsx:** Root application component |
| 80 | +- **Wallet.tsx:** Core wallet UI logic |
| 81 | +- **Components:** The component folder contains all of the UI components(Activities,AddFederation,Header...) |
| 82 | +- **Pages:** The Pages folder contains all the of the pages and tabs of the main wallet(JoinFederation,Ecash,Settings...) |
| 83 | +- **Redux:** Redux files manages the fedimint web sdk and NDK initialization and thier working |
| 84 | + - 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 |
| 85 | + - 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) |
| 86 | +- **Services:** The services folder contains the helper functions and the main fedimint web sdk rpc methods. |
| 87 | + |
| 88 | +## 🚀 Running the application |
| 89 | + |
| 90 | +- Clone the repository |
| 91 | + |
| 92 | + git clone https://github.com/Harshdev098/fedimint-web-wallet.git |
| 93 | + |
| 94 | +- Install the dependencies |
| 95 | + |
| 96 | + ``` |
| 97 | + npm install |
| 98 | + ``` |
| 99 | + |
| 100 | +- Start the app in development mode |
| 101 | + |
| 102 | + ``` |
| 103 | + npm run dev |
| 104 | + ``` |
| 105 | + |
| 106 | +## 🤝 Contributions |
| 107 | + |
| 108 | + Before contributing to the project please go through our contribution guidelines [Contribution.md](CONTRIBUTION.md) |
0 commit comments