CoinOS is a mobile-friendly Point-of-Sale page that merchants can use to accept Bitcoin payments.
- You create an account and configure some basic parameters for your storefront like a name, logo, and bitcoin receiving address
- You set an exchange rate to be used to convert from your local currency to bitcoin
- CoinOS creates a custom webpage that you can bring up on a mobile device to generate payment requests
- You enter a sale amount in your local currency and CoinOS converts it to bitcoin using your chosen exchange rate
- CoinOS creates a QR code for the payment request with your receiving address and the sale amount encoded
- CoinOS listens for transactions on the Bitcoin network and displays a notification when the requested amount is received at your address
- The details of the transaction and the exchange rate used at the time of sale are recorded and made available in a convenient report
The site is programmed in HTML and Coffeescript using NodeJS and jQuery. Account details and transaction data are stored in a Redis database. Users are responsible for providing their own receiving addresses managed with whatever wallet they prefer, so CoinOS never stores any bitcoins.
We use the websocket payment notification API from http://blockchain.info/api/api_websocket to listen for and display payment notifications in real time. The bitcoin exchange rates are fetched from http://bitcoinaverage.com/
Install nodeJS (http://nodejs.org/) and redis (http://redis.io/) then:
On Ubuntu
nodeJS:
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
redis:
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
run redis:
src/redis-server
git clone https://github.com/thebitcoincoop/coinos
cd coinos
npm install
nodejs install.js
# Change the config.js.sample to config.js and add the admin credentials
nodejs app.js
Now the app should be running at http://localhost:3000/
Copyright (C) 2012 Adam Soltys
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.