CryptoTerminal is an open-source terminal application with which merchants can accept in-person cryptocurrency payments.
The high-level goals for the app include:
- Easy to use for both merchants and customers.
- Catch and resolve common gotcha's that happen everyday with most cryptocurrency payment solutions.
- Keep you, the merchant, in control of your funds. It is impossible for your funds to be compromised by the app because it does not have access to your private keys.
- Maintain the highest possible standards for both privacy and security.
If you would like to contribute to the project, the following should help get you started:
- Getting Started
- Developing with Cryptocurrencies
The following is a list of requirements needed to contribute to this project.
- nodejs - For Linux and Mac install node via nvm.
- For Android development:
- Java Development Kit (JDK) version 8 or higher. Use your system's native package manager to install the JDK (if available).
- Android SDK - On Ubuntu 18.04 or later, it is possible to install Android Studio from Ubuntu Software Sources.
- adb - Not required, but is recommended.
Before continuing, be sure you already have the project's requirements.
Download the project files via git:
git clone https://github.com/samotari/crypto-terminal.git
Install the project's dependencies:
cd crypto-terminal npm install
Build the application files:
npm run build
Before installing and running the app on Android, you must prepare the Android platform with cordova:
npm run prepare:android
This downloads the cordova plugins which are necessary to build the app for Android devices.
Running on Android (VM)
Run the following command to check to see if there are any available Android virtual devices:
Install and run the app on the virtual device with the following command:
npm run android-vm
Running on Android (Device)
To install and run the app on an Android device, you must first:
- Enable developer mode on the device.
- Enable USB debugging
Once developer mode and USB debugging are enabled, connect the device to your computer via USB. Run the following command to check to see if your computer is authorized:
Install and run the app on the device: with the following command
npm run android
Create Signed APK
Create your signing key:
npm run android-generate-signing-key
Build a production APK:
npm run build:prod && npm run build:apk
If successful, it should have created a new
.apk file at the following path:
To install the newly created APK onto an Android device:
adb install ./platforms/android/app/build/outputs/apk/release/app-release.apk
- You may need to run
adb devicesbefore the above command.
- And if the app is already installed on the device, you will need to use the
-rflag to reinstall it.
Prepare F-Droid Release
F-Droid requires the Android platform files (built by Cordova) in order to build an APK. This repository contains a special branch specifically for F-Droid - the branch contains the platform files from the latest, stable release.
After making a release of the app, the F-Droid branch must be updated as well. Run the following script to do this:
npm run release:fdroid
Note that write access for this repostiory is required.
Developing with Cryptocurrencies
This project is focused on working with cryptocurrencies as a payment method. As such, you will need to know some basics about how cryptocurrencies work and how to develop applications that use them.
It's a good idea to test your application without risking real money, which is why the bitcoin testnet exists.
- Bitcoin - How it works - A decent starting point if you are totally new to bitcoin and cryptocurrency.
- Recommended wallet applications:
- "Faucets" can be used to obtain testnet bitcoin:
Litecoin is very similar to Bitcoin but with one key difference: blocks are mined about every 2.5 minutes instead of once every 10 minutes. This means that transactions are confirmed more quickly and fees are lower. To learn more about Litecoin you can check the official project website.
- Recommended wallet applications:
- Coinomi - A mobile wallet application for Android and iOS.
- Electrum-LTC - A desktop wallet application which can be run in testnet mode from the command line like this:
electrum-ltc --testnet. Supports legacy and segwit (backwards compatible and bech32) addresses.
- "Faucets" can be used to obtain testnet litecoin:
This project is licensed under the GNU Affero General Public License v3 (AGPL-3.0).