tbloncar / zap-desktop

Lightning Network desktop application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

screenshot
Zap

Zap is a free Lightning Network wallet focused on user experience and ease of use, with the overall goal of helping the cryptocurrency community scale Bitcoin and other cryptocurrencies.

Zap is built on top of LND, uses a Node.js proxy and, Electron + React + Redux for the UI.

Join us on slack to discuss development, design and product

Requirements

  • An up and running BTCD
  • An up and running LND - see install.md
  • Node.js version >= 7 and npm version >= 4.

For now Zap assumes you are running BTCD, LND

Install

If you have installation or compilation issues, please file a Github issue

After installing the above requirements, clone the repo via git:

git clone https://github.com/LN-Zap/zap-desktop.git

After the repo is cloned, you'll want to generate a Node.js compatible cert

# For Linux
$ cd ~/.lnd
# For Mac
$ cd /Users/{your_user_name}/Library/Application Support/Lnd
# For Windows
$ cd \Users\{your_user_name}\AppData\Local\Lnd

# Then generate the cert
$ openssl ecparam -genkey -name prime256v1 -out tls.key
$ openssl req -new -sha256 -key tls.key -out csr.csr -subj '/CN=localhost/O=lnd'
$ openssl req -x509 -sha256 -days 3650 -key tls.key -in csr.csr -out tls.cert
$ rm csr.csr

Once you've created the Node.js compatible cert, paste the path to your cert in app/lnd/config/index.js:

// Cert will be located depending on your machine
// Mac OS X: /Users/{your_user_name}/Library/Application Support/Lnd/tls.cert
// Linux: ~/.lnd/tls.cert
// Windows: C:\Users\{your_user_name}\AppData\Local\Lnd\tls.cert

export default {
  ...,
  cert: '/path/to/cert/tls.cert'
}

And then install dependencies with yarn

$ cd zap-desktop
$ yarn

# For Mac & Linux
$ ./node_modules/.bin/electron-rebuild

# For Windows
$ .\node_modules\.bin\electron-rebuild.cmd

Then to start it:

$ npm run dev

Test

$ npm run test

Lint

$ npm run lint

Contributing:

Please see the contributing guide

Todos (Last updated August 16th):

Join us on slack before tackling a todo to avoid duplicate work. This list will be updated daily to show what todos are being worked on

Refactor

  • Move Node.js proxy to ipcRenderer. Done
  • Use two package.json structure
  • General refactor (I know this TODO sucks but the code is a bit sloppy still)

Features

  • Configurable BTCD + LN node connection (do not assume/rely on localhost)
  • Error handling
  • More tests
  • List on-chain transactions
  • Ability to search filter for payments
  • Websocket handling for transactions
  • Websocket handling for sendpayment
  • Channel notifications
  • Payment notifications
  • Transaction notifications
  • Generate newaddress for the wallet deposit
  • Litecoin UI
  • Settings route
  • describegraph UI to see current status of the Lightning Network
  • Support other currencies (EUR, JPY, etc)

Design

  • Error handling
  • On-chain transactions list
  • Notifications
  • Litecoin UI (pick out a silver main color)
  • describegraph UI to see current status of the Lightning Network

Q & A (Quality and Assurance)

A good product not only has good software tests but also checks the quality of the UX/UI. Putting ourselves in the shoes of a user will be very important for Zap.

If you see issues please report with screenshots and/or how to reproduce the bug/error

Devices

  • Mac
  • Windows
  • Linux

Example user stories

User wants to connect to a peer

User wants to open a channel

User wants to create a payment request

User wants to make a payment

User wants to view the application in USD

User wants to search for a payment request

About

Lightning Network desktop application

License:MIT License


Languages

Language:JavaScript 74.3%Language:CSS 14.4%Language:Protocol Buffer 10.4%Language:HTML 0.9%