- Built with React Native for Android & iOS.
- Written in Typescript
- Fully customizable with designed components
- Built with accessibility in mind ♿️
- Built-in localization 💬
- Open source 😸
Etta Wallet will be a resource for experimenting with non-custodial lightning with a strong bias towards usability, accessibility and good UX.
The project is strongly inspired by Bitcoin Design Community's daily spending wallet and will continue to evolve with their sound suggestions.
- Bitcoin only wallet
- Non-custodial
- Lightning via LDK and Electrum
- Supports multiple languages and locales
- Accessibility baked-in (Haptic feedback, screen reader support)
- Biometrics security: Fingerprint, Touch ID, FaceID
- Scan QR codes
- Just-In-Time liquidity with zero-conf channels
- Open new channels
- Automated channel creation via LSP
- Local backups
- Cloud backups
- Connect over TOR
- LNURL support
- Contacts (For BOLT 12 offers, Lightning addresses, etc)
- Toggle dark mode
- Ships in testnet for now
- Zero-conf channels are still incomplete pending more testing. New channels will be usable once the funding transaction has one confirmation.
- Translations are outdated.
- Accessibility features are outdated for most components.
EttaWallet is still in beta and only works on testnet for now but it would be nice to have more people test the recent release. You can find links for Android and IOS below. You need to have TestFlight on IOS:
Expect a few performance hits, maybe a crash here and there. Bare with me, working to get this to be as stable as possible. If you see something is wrong, especially if your node doesn't seem to start, you can ping me @rukundo__
Note Please make sure have set up your development environment properly. Here is a good guide but here's the TLDR:
- Install node.js LTS version(>= 16)
- Install yarn package management tool
- To build the IOS app, make sure you have XCode installed and the version is greater than or equal to 13.3
- To build the Android app, make sure that the local JDK version is greater than or equal to 11 and the path to JDK is set in bash.
Start by forking the repo from GitHub, clone it locally and install dependencies, like so:
git clone https://github.com/YOUR_GITHUB_USERNAME/EttaWallet
cd EttaWallet
yarn install
Once you've cloned the repo, installed dependencies, run the following command.
yarn start
- Using a physical android phone? Enable Developer mode and USB Debugging, and confirm it is connected by running
adb devices
. If you want to use an Android simulator, this step isn't necessary - Open a new tab in your terminal and run
yarn android
- Open a new tab in your terminal and run
yarn ios
.
- The app does not build or start
For any missing environment variables, module and dependency issues in the build phase, it is recommended to use the command yarn clean
in the root directory first. The command will clear all sub-dependencies, as well as the module cache of yarn, the cache of tools such as metro / babel, and then restart the project to try.
- CocoaPods related errors
This might happen while installing Pods for the IOS App. You can run yarn clean
which will deintegrate the existing Pods and attempt to reinstall. In the ./postinstall.js
script, the Pods are configured to install for M1 architecture. If you are using an older mac, you can simply remove edit ./postinstall.js
and uncomment the first line in function postInstallMac()
but remember to comment the next few lines for M1 though. After that, you can run yarn clean
again.
- This project has only been developed on macOS and no testing has been done (yet) on other operating systems. If you encounter issues on Windows, I suggest you try using a unix-like environment like WSL.
EttaWallet is an open-source project so anybody can use and contribute to it. You also don't necessarily need to know how to code. Some meaningful contributions include:
- Sharing ideas and suggestions
- Improving documentation
- Sharing well-written bug reports
- Improving the translation scope.
- Requesting new features.
You can start in the discussion forum here.
If you would like to contribute code, here a few guidelines:
- It would be helpful to create an issue first before submitting a PR just to make sure nobody isn't working on the same yet or it just wouldn't be a good fit.
- Even if your changes are obvious, your PR should define what you are changing. Nothing is too obvious.
- PRs should be opened against the
next
branch.
current
- The latest release
next
- The branch to submit pull requests against. It mirrors what's coming in the next release
EttaWallet is 100% open-source and available under the MIT license.
Special thanks to the following open-source projects that help make EttaWallet possible.
- All design tokens and primitives are inspired by Bitcoin Design Guide's daily spending wallet
- Icons are courtesy of Bitcoin Icons
- Non-custodial lightning is courtesy of Lightning Dev Kit(LDK) and made possible through Synonym's react-native-ldk
If you would like to support the project, you can do that here: https://ettawallet.app/donate