ch4ot1c / crypto-terminal

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

Home Page:https://cryptoterminal.eu/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

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

https://cryptoterminal.eu/

License:GNU Affero General Public License v3.0


Languages

Language:JavaScript 75.5%Language:CSS 16.2%Language:HTML 7.9%Language:Shell 0.3%