Be Your Own Bank at login.blockchain.com. Please contact support if you have any issues using the wallet.
This repo contains the three codebases/packages listed below.
- 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 >= 10.2 and Yarn version >= 1.12 are installed
- From the project root, run the following command to install dependencies: chmod +x ./setup.sh && ./setup.sh.
- Start the application in development mode: yarn start
- The frontend application will now be accessible via browser at localhost:8080
If you require the application to run locally over HTTPS, follow the instructions here.
You can disable SSL by setting the DISABLE_SSL env param to true with any start command. (e.g. DISABLE_SSL=true yarn start:staging)
To ensure proper support for Windows, please take the following actions before running the above setup instructions.
- Open a Powershell window with rights elevated to an Administrator.
- Run npm install -g windows-build-tools. This will install Python 2.7 and Visual C++ Build Tools which are required to compile some native Node modules.
- Ensure Python has been added to your environment variables by opening a cmd prompt and typing python. If you get aCommandNotFoundExceptionmessage, add the folder%USERPROFILE%\.windows-build-tools\python27to your environment variables.
- To completely remove all dependencies and artifacts run yarn clean
- To add/remove an NPM package run yarn addoryarn removein the package folder. After installing or uninstalling a NPM package, runyarnin the root folder to re-init the project
- All development specific dependencies should be installed as a dev-dependencyin the top levelpackage.jsonviayarn i --save-dev [package-name]
- All application specific dependencies should be installed in the specific packages package.jsonviayarn i --save [package-name]
The frontend application can be ran locally with different build configurations found in config/env.  The following commands are available:
- yarn startRuns the application with the- development.jsconfiguration file
- yarn start:devRuns the application with the- development.jsconfiguration file
- yarn start:stagingRuns the application with the- staging.jsconfiguration file
- yarn start:testnetRuns the application with the- testnet.jsconfiguration file
- yarn start:prodRuns the application with the- production.jsconfiguration file
- yarn run:prodRuns the application mimicking the production environment entirely (i.e. code is bundled and minified, HMR is disabled, Express server is used (- ./server.js) and the- production.jsconfiguration file is loaded)
Notes:
- Developers will need to manually create the development.jsandstaging.jsfiles
- Custom application runtimes are possible by modifying the corresponding environment files found in the config/envfolder
- React Developer Tools Inspect the React component tree
- Redux DevTools View/debug Redux state changes
We follow the rules outlined by the Javascript Standard Style as well as a few React specific rules.
Code linting is handled by ESLint. The following commands are available:
- yarn lintLints all packages
- yarn lint:componentsLints only blockchain-info-components
- yarn lint:coreLints only blockchain-wallet-v4
- yarn lint:frontendLints only blockchain-wallet-v4-frontend
- yarn lint:fixAutomatically resolves fixable issues via ESLint
These IDE plugins/packages assist with complying with these lint rules while developing:
We follow all standard rules that are provided by Prettier. The following commands are available:
- yarn prettierRuns Prettier against all packages
- yarn prettier:componentsRuns Prettier against only blockchain-info-components
- yarn prettier:coreRuns Prettier against only blockchain-wallet-v4
- yarn prettier:frontendRuns Prettier against only blockchain-wallet-v4-frontend
It is recommended to setup a Prettier plugin for your IDE plugins/packages that will automatically prettify your files on save.
Testing is done via Jest and Enzyme.
- yarn testRuns unit tests for all packages
- yarn test:componentsRuns unit tests for only blockchain-info-components
- yarn test:coreRuns unit tests for only blockchain-wallet-v4
- yarn test:frontendRuns unit tests for only blockchain-wallet-v4-frontend
- yarn test:watchWatches and then runs desired tests
- yarn test:components:watchWatches and then runs desired tests for only blockchain-info-components
- yarn test:core:watchWatches and then runs desired tests for only blockchain-wallet-v4
- yarn test:frontend:watchWatches 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:debugDebugs unit tests for only blockchain-info-components
- yarn test:core:debugDebugs unit tests for only blockchain-wallet-v4
- yarn test:frontend:debugDebugs 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:updateUpdates component snapshots for only blockchain-info-components
- yarn test:frontend:updateUpdates component snapshots for only blockchain-wallet-v4-frontend
To generate code coverage reports via Istanbul, the following commands are available:
- yarn coverageGenerates a coverage report for all packages
- yarn coverage:componentsGenerates coverage report for only blockchain-info-components
- yarn coverage:coreGenerates coverage report for only blockchain-wallet-v4
- yarn coverage:frontendGenerates 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.htmlSimply open the- index.htmlfile in your browser to view.
To visualize and interact with the tree of the production code bundles files:
- yarn analyzeOnce 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 assets
- storybook:serveBuilds storybook assets and then serves them locally at- localhost:6006
- storybook:deployBuilds storybook assets and then serves them to github pages. You will probably need to run- cd ./packages/blockchain-info-components && git remote add origin [email protected]:blockchain/blockchain-wallet-v4-frontend.gitfirst.
If the deploy begins to fail, deleting the static build file before redeploy will likely help.
Bug fixes and feedback on our code is always appreciated.
Security issues can be reported to us in the following venues:
- Email: [email protected]
- Bug Bounty: https://hackerone.com/blockchain