***Note:*** *If you have installation or compilation issues, please file a [Github issue](https://github.com/LN-Zap/zap-desktop/issues) or ping us in [Slack](https://join.slack.com/t/zaphq/shared_invite/enQtMzMxMzIzNDU0NTY3LTgyM2QwYzAyZTA5OTAyMjEwMTQxZmZmZmZkNWUzMTU2MmMyNmMxNjY4Y2VjY2FiYTRkMTkwMTRlMTE4YjM2MWY).*
**_Note:_** _If you have installation or compilation issues, please file a [Github issue][issues] or ping us in [Slack][slack]._
Install all the dependencies with yarn + install grpc:
Install all the dependencies with yarn:
```bash
cd zap-desktop
yarn
npm run install-grpc
```
## Lightning Network Daemon (lnd)
@ -46,7 +51,7 @@ This is the default configuration for the Zap wallet. To use the light client yo
#### Lightning Labs Binary
***Note:*** *The Lightning Labs `lightning-app` project is different then [lnd](https://github.com/lightningnetwork/lnd)*
**_Note:_** _The Lightning Labs `lightning-app` project is different then [lnd](https://github.com/lightningnetwork/lnd)_
Download the [lnd binary](https://github.com/lightningnetwork/lnd/releases) for your appropriate OS and copy it to the [appropriate location](#lnd-location) for your OS.
@ -56,14 +61,12 @@ You can [compile](https://github.com/lightningnetwork/lnd/blob/master/docs/INSTA
For Zap to run properly without any custom `lnd` setup, copy the `lnd` binary to the [appropriate location](#lnd-location) for your OS.
The `lnd` binary can be found at `$GOPATH/bin`.
### Full Bitcoin Node
Follow the instructions on the [lnd installation](https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md) page.
### lnd Location
Zap expects `lnd` to be in one of these directories depending on your OS:
@ -81,6 +84,7 @@ chmod +x lnd
## Running Zap
### Testing
To test that everything has been installed correctly:
(Even after a recent refactor the code is still a bit sloppy, in a bit of a segwit rush, apologize in advance for any "wtf is this?")
# Contributing
## Overview
Please join us on [slack](https://join.slack.com/t/zaphq/shared_invite/enQtMzMxMzIzNDU0NTY3LTgyM2QwYzAyZTA5OTAyMjEwMTQxZmZmZmZkNWUzMTU2MmMyNmMxNjY4Y2VjY2FiYTRkMTkwMTRlMTE4YjM2MWY) and check [open issues](https://github.com/LN-Zap/zap-desktop/issues) to see what contributions are needed before tackling a task to avoid duplicate work.
Thanks for being willing to contribute!
## Pull Requests
The `master` branch will be used for all pull requests for the time being. This may change as the repo and contributors grow.
- **Do not open up a GitHub issue if the bug is a security vulnerability in Zap**, and instead to refer to our [Security Policy](README#security).
- **Ensure the bug was not already reported** by searching on GitHub under [Issues][issues].
- If you're unable to find an open issue addressing the problem, [open a new one][issues]. Be sure to include a **title and clear description**, and as much relevant information as possible.
#### **Did you write a patch that fixes a bug?**
- Open a new GitHub pull request with the patch.
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
- Before submitting, please read the [Coding Guidelines](#coding-guidelines) to know more about our coding conventions and practices.
#### **Do you intend to add a new feature or change an existing one?**
- Please join us on [slack][slack] and check [open issues][issues] to see what contributions are needed before tackling a task to avoid duplicate work.
#### **Do you have questions about the source code?**
- Ask any question about the Zap source code in [slack][slack].
## Contribution Guidelines
Branch names should start with `feature` or `fix` followed by `/description_of_branch`.
### Committing and Pushing changes
We follow the [conventional changelog standard][convention] for commit messages. You don't have to follow this convention if you don't like to. Just know that when we merge your commit, we'll probably use "Squash and Merge" so we can change the commit message :)
Valid conventional commit types are:
- `build`: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- `chore`: Other changes that don't modify src or test files
- `ci`: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
- `docs`: Documentation only changes
- `feat`: A new feature
- `fix`: A bug fix
- `perf`: A code change that improves performance
- `refactor`: A code change that neither fixes a bug nor adds a feature
- `revert`: Reverts a previous commit
- `style`: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- `test`: Adding missing tests or correcting existing tests
#### Example
```bash
git branch feature/list-onchain-txs
git commit -m "feat(close-channel): wire up close channel to UI"
```
Please make sure to run the tests before you commit your changes. You can run `npm test` which will run the test suite.
### Opt into git hooks
There are git hooks set up with this project that are automatically installed when you install dependencies. They're really handy, but are turned off by default (so as to not hinder new contributors). You can opt into these by creating a file called `.opt-in` at the root of the project and putting this inside:
```
commit-msg
pre-commit
```
### Commit Messages
### Branch Names
Commit messages should start with `feature`, `fix`, or `test` followed by `(subject_of_commit)` and ending with `: description_of_commit`.
Branch names should start with a valid conventional commit type followed by `/description_of_branch`.
#### Example
```bash
git commit -m "feature(list-onchain-txs): create hard code mock of onchain-txs list"
git branch feat/close-channel-ui
```
## eslint
This project has eslint rules and pull requests should pass `npm run lint` before being merged. The eslint rules are not final by any means and can be changed if necessary
### Pull Requests
The `master` branch will be used for all pull requests for the time being. This may change as the repo and contributors grow.
### Style Guide
This project has eslint rules and pull requests should pass `npm run lint` before being merged. The eslint rules are not final by any means and can be changed if necessary.
### Tests
## Tests
Tests should try to be written for every feature/fix and pass `npm run test` before being merged. With the demand for the Lightning Network and Zap rising, rapid development will naturally leave some code untested but we should all try our best.
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.
We have an active [slack](https://join.slack.com/t/zaphq/shared_invite/enQtMzMxMzIzNDU0NTY3LTgyM2QwYzAyZTA5OTAyMjEwMTQxZmZmZmZkNWUzMTU2MmMyNmMxNjY4Y2VjY2FiYTRkMTkwMTRlMTE4YjM2MWY) channel where you can join the discussion on development, design and product.
We have an active [slack][slack] channel where you can join the discussion on development, design and product.
## Table of Contents
## Installing
- [Security](#security)
- [Install](#install)
- [Usage](#usage)
- [Advanced Usage](#advanced-usage)
- [Get Help](#get-help)
- [Maintainers](#maintainers)
- [Contribute](#contribute)
- [License](#license)
***Note:*** *If you would like to use a full bitcoin node, please see the [advanced usage](https://github.com/LN-Zap/zap-desktop/blob/master/ADVANCED.md) page.*
## Security
Download the [latest release](https://github.com/LN-Zap/zap-desktop/releases) for your appropriate OS and follow the instructions below.
If you discover or learn about a potential error, weakness, or threat that can compromise the security of Zap, we ask you to keep it confidential and [submit your concern directly to the Zap security team](mailto:jimmymowschess@gmail.com?subject=[GitHub]%20Zap%20Security).
## Install
Download the [latest release][releases] for your appropriate OS and follow the instructions below.
### macOS
Once you have the .zip file downloaded, simply **double click** on the file to unzip.
Once you have the .tar.gz file downloaded, simply **double click** on the file to unzip.
Navigate to the newly extracted folder, then drag-and-drop the `Zap.app` file to the `Applications` folder.
@ -72,22 +91,48 @@ Once you have the .AppImage file extracted, you can either **double click** the
```
## Advanced Usage
If you would like to install from source or run a full bitcoin node, please see the [advanced usage](https://github.com/LN-Zap/zap-desktop/blob/master/ADVANCED.md) page.
### Contributing
If you would like to help contribute to the project, please see the [contributing guide](https://github.com/LN-Zap/zap-desktop/blob/master/CONTRIBUTING.md).
If you would like to install from source, run a full bitcoin node, or connect to a custom lnd instance please see the [advanced usage](ADVANCED.md) page.
## Q & A (Quality and Assurance)
## Get Help
***Note:*** *If you are having problems with Zap, please report the issue in [GitHub](https://github.com/LN-Zap/zap-desktop/issues) or on [slack](https://join.slack.com/t/zaphq/shared_invite/enQtMzMxMzIzNDU0NTY3LTgyM2QwYzAyZTA5OTAyMjEwMTQxZmZmZmZkNWUzMTU2MmMyNmMxNjY4Y2VjY2FiYTRkMTkwMTRlMTE4YjM2MWY) with screenshots and/or how to reproduce the bug/error.*
If you are having problems with Zap, please report the issue in [GitHub][issues] or on [slack][slack] with screenshots and/or how to reproduce the bug/error.
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 is a very important design principle of Zap.
This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. See [LICENCE](LICENCE) for more information.
description='Enter the connection details for your Lightning node.'
title="Connection details"
description="Enter the connection details for your Lightning node."
back={()=>changeStep(0.1)}
next={()=>
startLnd({
@ -86,8 +86,8 @@ const Onboarding = ({
case1:
return(
<FormContainer
title='What should we call you?'
description='Set your nickname to help others connect with you on the Lightning Network'
title="What should we call you?"
description="Set your nickname to help others connect with you on the Lightning Network"
back={()=>changeStep(0.1)}
next={()=>changeStep(2)}
>
@ -97,8 +97,8 @@ const Onboarding = ({
case2:
return(
<FormContainer
title='Autopilot'
description='Autopilot is an automatic network manager. Instead of manually adding people to build your network to make payments, enable autopilot to automatically connect you to the Lightning Network using 60% of your balance.'// eslint-disable-line
title="Autopilot"
description="Autopilot is an automatic network manager. Instead of manually adding people to build your network to make payments, enable autopilot to automatically connect you to the Lightning Network using 60% of your balance."// eslint-disable-line
description='Enter your wallet password or create a new wallet'// eslint-disable-line
title="Welcome back!"
description="Enter your wallet password or create a new wallet"// eslint-disable-line
back={null}
next={null}
>
@ -119,8 +119,8 @@ const Onboarding = ({
case4:
return(
<FormContainer
title='Welcome!'
description='Looks like you are new here. Set a password to encrypt your wallet. This password will be needed to unlock Zap in the future'// eslint-disable-line
title="Welcome!"
description="Looks like you are new here. Set a password to encrypt your wallet. This password will be needed to unlock Zap in the future"// eslint-disable-line
back={null}
next={()=>{
// dont allow the user to move on if the confirmation password doesnt match the original password
@ -137,8 +137,8 @@ const Onboarding = ({
case5:
return(
<FormContainer
title={'Alright, let\'s get set up'}
description='Would you like to create a new wallet or import an existing one?'// eslint-disable-line
title={"Alright, let's get set up"}
description="Would you like to create a new wallet or import an existing one?"// eslint-disable-line
constnotifBody=transaction.amount>0?'Lucky you, you just received a new on-chain transaction. I\'m jealous.':'Hate to see \'em go but love to watch \'em leave. Your on-chain transaction successfully sent.'// eslint-disable-line max-len
constnotifBody=
transaction.amount>0
?"Lucky you, you just received a new on-chain transaction. I'm jealous."
:"Hate to see 'em go but love to watch 'em leave. Your on-chain transaction successfully sent."// eslint-disable-line max-len