The goal of this project is to create a mobile application that merchants can use to accept cryptocurrency payments in a variety of cryptocurrencies. The focus will be on ease-of-use, security, and privacy. In the beginning our goal is to support the following cryptocurrencies:
The technology stack will include:
- 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.
- 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
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.
Introduction to some of the less obvious folders:
- /tasks - custom Grunt tasks live here
- /js - Javascript you should be modifying. Gets processed during the Grunt build
- /css - CSS you should be modifying. Gets processed during the Grunt build
- /build - temporary files used during the build process by Grunt
- /www - output from the build process. Minified and uglified, this is served in the app once you run it
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.
- Testnet wallet applications:
- Mycelium Testnet Wallet - A mobile testnet wallet application for Android.
- Electrum - A desktop wallet application which can be run in testnet mode from the command line like this:
electrum --testnet
- "Faucets" can be used to obtain testnet bitcoin:
Valid testnet master public key that you can use while developing:
tpubDD8itYXaDtaTuuouxqdvxfYthFvs8xNbheGxwEcGXJyxrzuyMAxv4xbsw96kz4wKLjSyn3Dd8gbB7kF1bdJdphz1ZA9Wf1Vbgrm3tTZVqSs
- Testnet wallet applications:
- Electrum-LTC - A desktop wallet application which can be run in testnet mode from the command line like this:
electrum-ltc --testnet
- Electrum-LTC - A desktop wallet application which can be run in testnet mode from the command line like this:
- "Faucets" can be used to obtain testnet litecoin:
Valid testnet master public key that you can use while developing:
tpubD6NzVbkrYhZ4YLXXEvJuNSnv3duP7VvCVG2ybxbbfcdJrgfvyfqjLdS2mntHXAr5YVLQvGqSdwa5j62bJhPCGTxX6xXeJp4CtRw494UKG96
End-to-end tests are included in the project which allow automated testing (in a real browser) of the application's user interface. The tests use selenium and webdriverio. To run the tests:
grunt test:e2e
Note that selenium requires Java Run-time Environment (JRE).