CryptoTerminal is an open-source terminal application with which merchants can accept in-person cryptocurrency payments.
Switch branches/tags
Nothing to show
Clone or download
karliatto Merge pull request #303 from dalijolijo/german
Add german language support
Latest commit 3619bd3 Nov 16, 2018
Permalink
Failed to load latest commit information.
css check if transaction is replaceable Oct 3, 2018
docs Lightning Network (#84) Jun 20, 2018
exports Monero (#127) Feb 15, 2018
grunt Pay with paper wallet via camera Oct 1, 2018
homepage Minor text improvement Aug 16, 2018
html check if transaction is replaceable Oct 3, 2018
images Pay with paper wallet via camera Oct 1, 2018
js Merge pull request #303 from dalijolijo/german Nov 16, 2018
play-store-assets screenshots for play store Jul 2, 2018
scripts Added more display currencies Jul 12, 2018
sounds check if transaction is replaceable Oct 3, 2018
tasks Added "Recommended Mobile Wallets" page Jul 17, 2018
test fixing test to use index 0 Oct 3, 2018
third-party Monero: Validate private view key against public address Aug 29, 2018
.eslintrc.js Added eslint grunt task Nov 10, 2017
.gitignore Build config.xml from template Jun 25, 2018
.travis.yml Updated deps Aug 14, 2018
CHANGELOG.md check if transaction is replaceable Oct 3, 2018
COPYRIGHT Initial commit Jun 10, 2017
GIT-MAGIC.md Added git magic file for useful tricks with git Jul 24, 2017
LICENSE Initial commit Jun 10, 2017
README.md Added homepage section to readme May 30, 2018
build-extras.gradle Fix for Android issue with PNG image during pre-build step Feb 4, 2018
config-template.xml Require Android SDK >=19, clean build before apk Jul 3, 2018
config.js Socket server for testing (#243) Jul 4, 2018
gruntFile.js Initial commit Jun 10, 2017
index.html Socket server for testing (#243) Jul 4, 2018
package-lock.json Pay with paper wallet via camera Oct 1, 2018
package.json Pay with paper wallet via camera Oct 1, 2018

README.md

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.

Contributing

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. For Windows, use an installer from the nodejs website.
  • grunt-cli - npm install -g grunt-cli
  • For Android development:
    • cordova - npm install -g cordova
    • 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.

Get the Code

Before continuing, be sure to download and install the project requirements.

To get the project files and start working locally, you should first create a fork. Then "clone" your fork of the project:

git clone https://github.com/YOUR_USERNAME/crypto-terminal.git

Don't forget to replace YOUR_USERNAME with your GitHub username.

cd crypto-terminal
npm install
grunt

Open your browser and navigate to localhost:3000. You should see the settings screen the first time you open the app.

Technical Overview

The technology stack includes:

  • Standard web technologies (HTML, CSS, JavaScript).
  • Backbone.js - A JavaScript library for developing complex web applications.
  • cordova - To wrap the web application and create builds for Android, iOS, and other mobile platforms.
  • nodejs - As a build tool.

Directory structure explained:

  • build/ - Temporary files used during the build process by Grunt.
  • css/ - CSS source files.
  • exports/ - Files that are processed by browserify, which processes node.js modules so that they can be run in a browser.
  • grunt/ - Grunt task configuration files go here.
  • html/ - Source HTML files go here (templates for example).
  • js/ - JavaScript source files.
  • scripts/ - Miscellaneous script files go here.
  • tasks/ - Custom Grunt tasks live here.
  • third-party/ - Custom builds of third-party libraries.
  • test/ - Automated tests are defined here. This project uses mocha.
  • www/ - Final output from the build process. Minified and uglified, this is served in the app once you run it.

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.

Valid testnet master public key that you can use while developing:

tpubDD8itYXaDtaTuuouxqdvxfYthFvs8xNbheGxwEcGXJyxrzuyMAxv4xbsw96kz4wKLjSyn3Dd8gbB7kF1bdJdphz1ZA9Wf1Vbgrm3tTZVqSs

Litecoin

Valid testnet master public key that you can use while developing:

tpubD6NzVbkrYhZ4YLXXEvJuNSnv3duP7VvCVG2ybxbbfcdJrgfvyfqjLdS2mntHXAr5YVLQvGqSdwa5j62bJhPCGTxX6xXeJp4CtRw494UKG96

Monero

  • Testnet wallet applications:
    • monerujo - A mobile, light-weight wallet app for Monero. If you are running an older version of Android, you can install the app from an .apk that you can download from the project's GitHub repo.
  • "Faucets" can be used to obtain testnet monero:

Sample testnet settings that you can use during development:

Setting Key Value
Public Address monero.publicAddress 9xmkWjzAB8JguD7JvkJxPHgMwkf7VP5v3Z5eSNmRMdoeCEnoVu6eGUbZT3FQ3Q8XrGihNEbb4qGhqHHGK5kWy9chU3URbaF
Private View Key monero.privateViewKey 136674e3e6868bb04d4ef2674f97c00166f5f7aa67185bdda97cde8ecfe4f609

Android Development

Before continuing, be sure you already have the requirements for Android development.

Add the Android platform to the project (via cordova):

cordova platform add android

This downloads the cordova plugins which are necessary to build the app for Android devices.

Create Signed APK

Create your signing key:

npm run generate-android-signing-key

Run the APK build script:

npm run build-signed-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

Homepage

The homepage is hosted via GitHub pages at cryptoterminal.eu. It is intended as a non-technical entry-point for merchants to find and learn about the app.

The source files for the homepage are located in this project in the homepage/ directory.

To build and serve the homepage locally:

grunt homepage

Then open your browser to localhost:3003.

To update the production build, copy the homepage build files from build/homepage/www to the gh-pages git branch in this project.