Skip to content

CryptoTerminal is an open-source terminal application with which merchants can accept in-person cryptocurrency payments.

License

Notifications You must be signed in to change notification settings

samotari/crypto-terminal

Repository files navigation

CryptoTerminal

Build Status Status of Dependencies

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:

Requirements

The following is a list of requirements needed to contribute to this project.

  • nodejs - For Linux and Mac install node via nvm.
  • make
  • 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.
    • gradle
    • adb - Not required, but is recommended.

Getting Started

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

Android

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:

adb 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:

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:

adb devices

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:

./platforms/android/app/build/outputs/apk/release/app-release.apk

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 devices before the above command.
  • And if the app is already installed on the device, you will need to use the -r flag 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.

Bitcoin

It's a good idea to test your application without risking real money, which is why the bitcoin testnet exists.

Litecoin

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:

License

This project is licensed under the GNU Affero General Public License v3 (AGPL-3.0).