- Help build a powerful native mobile Bitcoin signer management application
- Contribute towards the integration, development and enhancement of Bitcoin UX design
- Unlock coin insights via integrated onchain (privacy/provenance/economic) analyses and corresponding data visualization to help inform, encourage and automate better Bitcoin usage best-pratices
- Advance Bitcoin understanding
- Test market demand for bitcoin centric applications
- Propagate open-source ethos
- Build and support Bitcoin and related FOSS projects
- Participate in Bitcoin history
- Bitcoin only
- Sat denomination supremacy
- Initial focus on on-chain bitcoin (coin-control/controlling sats)
- Emphasis on privacy
- Emphasis on personal labeling, tagging, and bookmarking
- Application of visualization/visual-native UI aiming to build upon and develop new Bitcoin design primitives to help make more advanced/power-user Bitcoin UX/UI more intuitive and accessible
- Take advantage of appropriate charts and graphic layouts for all data visualization
- Security - targetting optimal hot-signer-level security initially (future support for watch-only cold, multisig, vaults etc)
- Visually crafted and UX builds upon powerful feattures and improvements introoduced by the many existing brilliant open-soouurce FullyNoded, or Sparrow
- An intuitive and powerful mobile bitcoin app
- Experimental bitcoin centric lexicon
- Send bitcoin -> Sign bitcoin messages
- Spend bitcoin -> Consume UTXO
- Bitcoin balance -> Total spendable sats
- Wallet -> Signer
- Private key -> Account
- Address -> Invoice
- Transaction -> Message
- (...)
- Bitcoin specific UX patterns
- Bitcoin technology education
- Visual personal chain analysis
- UTXO control
- Fully open source
- Easily reproducible
- Open source dependencies only
- Bitcoin interface exclusively via open source library
- Mobile collaborative transaction interface (mobile joinmarket client?)
- Native lightning support built with LDK (keeping with UX/Data visual-focus)
- Bitcoin Development Kit via RN-BDK - becoming reference Bitcoin dev tools
- Blockstream Electrs - performant Bitcoin server interface/signer backend to bootstrap users who don't yet run their own node
- Photon SDK - powerful mobile Bitcoin dev kit to build forgiving, easy backup and recovery, intuitive signers
- Tor - private communications with your personal nodeserver/electrs
- Sparrow - very powerful and clean native Bitcoin signer management desktop app
- FullyNoded - very powerful iOS app focused on remote full node management
- BitFeed - beautiful, psychedelic block/transaction/timechain visualization
- Mempool.space - beautiful block explorer and Bitcoin data visualizations
- Zeus - pretty, increasingly powerful remote LN node management app
- Node.js (minimum version 22.4.0)
- Yarn
npm install --global yarnInstall the dependencies at the root of the repository
yarn installSet up Android Studio as usual. Otherwise, if you are using other IDE,
then install the packages android-sdk, android-sdk-build-tools,
android-sdk-platform-tools, and android-tools.
Once installed, set the environment variable ANDROID_HOME to point to
the location where the packages were installed, and update your PATH:
export ANDROID_HOME=/opt/android-sdk
export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulatorOn some Linux systems, ANDROID_HOME may be /opt/android-sdk. On Windows,
it may be /Users/username/Library/Android/sdk. Set it accordingly.
Install Java JDK 8 in order to donwload the images from the upstream.
Also, make sure to enable JDK 8 before running sdkmanager commands,
because they seem to work only with this version. To enable it on
arch-based systems, run:
sudo archlinux-java set java-8-openjdkThis will make JDK 8 the default Java environment. We can then proceed to
using sdkmanager.
You can list the images with the following command:
sdkmanager --listSelect the SDK that fits your platform (x86_64, arm64, or other). Then
install the image with the command:
sdkmanager --install 'system-images;android-34;default;x86_64'Of course, replace system-images;android-34;default;arm64-v8a with
the desired image name. This examples uses the default image for Android
SDK 34 for the x86_64 (intel CPU) platform.
Then, create an emulator device:
avdmanager create avd -n myemulator -k 'system-images;android-34;default;x86_64'Replace myemulator with the desired name for the emulator device and replace
system-images;android-34;default;x86_64 with the image downloaded earlier.
Once the device has been created, switch your Java environment to JDK 17 in order to run and build this application. If you choose not use a device emulator but use a physical one, then you would skip the previous steps (and not download Java 8) but you still have to install Java 17 and set it as the default version.
Lastly, if you get the error [CXX5304] while building, try running unset _JAVA_OPTIONS because this variable is sourced automatically and may pass
options that interfere with the building.
You need to make sure the binaries
Use gitbash as your shell instead of powershell. Then, create the
file .bash_profile in your home directory. It will be located in
C:\Users\user\.bash_profile, where user is your username. You can
create this file via the file explorer, via some IDE, or via the bash shell:
touch /c/Users/user/.bash_profileOnce created, open it in your editor or IDE and append the following lines:
export PATH="/c/Users/user/AppData/Local/Android/Sdk/platform-tools:$PATH"
export PATH="/c/Program Files/Java/jdk-17/bin:$PATH"
export ANDROID_HOME="/c/Users/user/AppData/Local/Android/Sdk"Of course. Change user to your username.
This will update your environment variables to include the binaries from Android SDK and Java JDK 17, which you must have installed to develop satsigner.
Update your PATH to include the directories /opt/android-sdk/tools,
/opt/android-sdk/platform-tools, and /opt/android-sdk/tools/bin. If you
want to use the emulator, also add the directory /opt/android-sdk/emulator
into your PATH.
export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulatorTip: use the tool direnv which loads environment variables dynamically
from a file called .envrc in the current directory (if it exists). To do
that, install and enable direnv, then create the file apps/mobile/.envrc
and place the content of the previous code block there.
Follow the expo documentation here
Make sure to select "Development build" and disabled "Build with Expo Application Services (EAS)"
Note: When starting a development server, do NOT run: npx expo start
Make sure you are on the mobile folder
cd apps/mobileRun for android or iOS
yarn android
yarn ios




