Be Your Own Bank at blockchain.info/wallet. Please contact support if you have any issues using the wallet.
This repo contains the three codebases/packages listed below that are combined into one via Lerna.
- blockchain-info-components The shared UI components library.
- blockchain-wallet-v4 The functional library for handling wallets.
- blockchain-wallet-v4-frontend The frontend application built with React/Redux.
- Ensure Node version >= 8.0 is installed
- Ensure
lerna
andyarn
are installed globally:npm install -g lerna yarn
- Install and link packages:
yarn bootstrap
- Start application in dev mode:
yarn start
- The frontend will now be accessible via browser at
localhost:8080
- After installing or uninstalling a NPM package, run the following node command at the root of the project:
lerna bootstrap
- All developer specific dependencies should be installed in the top level
package.json
. This helps reduce duplicate packages as well as speed up build times.yarn i --save-dev [package-name]
- To test bitcoin handling in dev mode: run this javascript command in the browser console:
window.navigator.registerProtocolHandler('bitcoin', http://localhost:8080/a/%s, 'Blockchain')
- React Developer Tools Inspect the React component tree
- Redux DevTools View/debug Redux state changes
To build the frontend application for production: yarn build:prod
We follow the rules outlined by the Javascript Standard Style as well as a few React specfic rules.
Code linting is handled by ESLint. The following commands are available:
yarn lint
Lints all packagesyarn lint:components
Lints only blockchain-info-componentsyarn lint:core
Lints only blockchain-wallet-v4yarn lint:frontend
Lints only blockchain-wallet-v4-frontendyarn lint:fix
Automatically resolves fixable issues via ESLint
These IDE plugins/packages assist with complying with these lint rules while developing:
Testing is done via Jest and Enzyme.
yarn test
Runs unit tests for all packagesyarn test:components
Runs unit tests for only blockchain-info-componentsyarn test:core
Runs unit tests for only blockchain-wallet-v4yarn test:frontend
Runs unit tests for only blockchain-wallet-v4-frontend
yarn test:watch
Watches and then runs desired testsyarn test:components:watch
Watches and then runs desired tests for only blockchain-info-componentsyarn test:core:watch
Watches and then runs desired tests for only blockchain-wallet-v4yarn test:frontend:watch
Watches and then runs desired tests for only blockchain-wallet-v4-frontend
To enable debugging for unit tests via the Chrome browser, run the following commands:
yarn test:components:debug
Debugs unit tests for only blockchain-info-componentsyarn test:core:debug
Debugs unit tests for only blockchain-wallet-v4yarn test:frontend:debug
Debugs unit tests for only blockchain-wallet-v4-frontend
After running one of the above commands, Node will wait for a debugger to attach before starting the tests.
To attach, simply open your browser and go to chrome://inspect
and click on "Open Dedicated DevTools for Node",
which will give you a list of available node instances you can connect to. Click on the address displayed in the terminal
(usually localhost:9229) and you will be able to debug tests using Chrome's DevTools.
We are snapshot testing UI some components. Here are the commands to update them when necessary:
yarn test:components:update
Updates component snapshots for only blockchain-info-componentsyarn test:frontend:update
Updates component snapshots for only blockchain-wallet-v4-frontend
To generate code coverage reports via Istanbul, the following commands are available:
yarn coverage
Generates a coverage report for all packagesyarn coverage:components
Generates coverage report for only blockchain-info-componentsyarn coverage:core
Generates coverage report for only blockchain-wallet-v4yarn coverage:frontend
Generates coverage report for only blockchain-wallet-v4-frontend
Depending upon which coverage report was ran, the results can be found in the following directories:
coverage/index.html
coverage/blockchain-info-components/index.html
coverage/blockchain-wallet-v4/index.html
coverage/blockchain-wallet-v4-frontend/index.html
Simply open theindex.html
file in your browser to view.
To run both unit tests and linting, the following commands are available:
yarn vet
Lints and unit tests all packagesyarn vet:components
Lints and unit tests only blockchain-info-componentsyarn vet:core
Lints and unit tests only blockchain-wallet-v4yarn vet:frontend
Lints and unit tests only blockchain-wallet-v4-frontend
To visualize and interact with the treemap of the production code bundles files:
yarn analyze
Once completed, a browser will automatically open with the results.
Storybook is used by the blockchain-info-components package to interactively view, develop and test components.
The following commands are available:
storybook:build
: Builds the static storybook assetsstorybook:serve
Builds storybook assets and then serves them locally atlocalhost:6006
Bug fixes and feedback on our code is always appreciated.
Security issues can be reported to us in the following venues:
- Email: security@blockchain.info
- Bug Bounty: https://hackerone.com/blockchain