|
6 years ago | |
---|---|---|
.circleci | 6 years ago | |
.github | 6 years ago | |
.storybook | 7 years ago | |
build | 7 years ago | |
docs | 7 years ago | |
flow-defs | 7 years ago | |
scripts | 6 years ago | |
src | 6 years ago | |
static | 6 years ago | |
test-e2e | 6 years ago | |
webpack | 7 years ago | |
.babelrc | 7 years ago | |
.eslintrc | 6 years ago | |
.flowconfig | 7 years ago | |
.gitignore | 6 years ago | |
.npmrc | 7 years ago | |
.nvmrc | 7 years ago | |
.prettierignore | 6 years ago | |
.prettierrc | 7 years ago | |
LICENSE | 7 years ago | |
README.md | 7 years ago | |
babel.config.js | 6 years ago | |
crowdin.yml | 7 years ago | |
electron-builder.yml | 7 years ago | |
jest.config.js | 7 years ago | |
package.json | 6 years ago | |
yarn.lock | 6 years ago |
README.md
Ledger Live (desktop)
![Crowdin](https://d322cqt584bo4o.cloudfront.net/ledger-wallet/localized.svg)
Ledger Live is a new generation wallet desktop application providing a unique interface to maintain multiple cryptocurrencies for your Ledger Nano S / Blue. Manage your device, create accounts, receive and send cryptoassets, ...and many more.
Architecture
Ledger Live is an hybrid desktop application built with Electron, React, Redux, RxJS,.. and highly optimized with ledger-core C++ library to deal with blockchains (sync, broadcast,..) via ledger-core-node-bindings. It communicates to Ledger hardware wallet devices (Nano S / Blue) to verify address and sign transactions with ledgerjs. Some logic is shared with live-common.
Coins
- supported by ledger-core (C++) implementation: BTC BCH LTC DASH QTUM ZEC BTG STRAT DOGE DGB HSR KMD PIVX ZEN VTC PPC VIA XST POSW CLUB
- supported by JavaScript implementation: ETH, ETC, XRP
Setup
Requirements
- NodeJS LTS
- Yarn LTS
- Python v2.7.10 (used by node-gyp to build native addons)
- You will also need a C++ compiler
Optional
- In the application we use
Museo Sans
font. To include it in the app, you need to have a zip filemuseosans.zip
which you should extract and place inside thestatic/fonts/museosans
directory
Install
# install dependencies
yarn
Run
# launch the app
yarn start
Build
# Build & package the whole app
# Creates a .dmg for Mac, .exe installer for Windows, or .AppImage for Linux
# Output files will be created in dist/ folder
yarn dist
Note: Use yarn dist:dir
to speed up the process: it will skip the packaging step. Handy for debugging builds. You can also use BUNDLE_ANALYZER=1 yarn dist:dir
to generate webpack-bundle-analyzer report.
Config (optional helpers)
Environment variables
(you can use a .env or export environment variables)
DEV_TOOLS_MODE=bottom # devtools position Options: right, bottom, undocked, detach
HIDE_DEV_WINDOW=0
## flags for development purpose
DEBUG_DEVICE=1
DEBUG_NETWORK=1
DEBUG_COMMANDS=1
DEBUG_DB=1
DEBUG_ACTION=1
DEBUG_TAB_KEY=1
DEBUG_LIBCORE=1
DEBUG_WS=1
LEDGER_DEBUG_ALL_LANGS=1
SKIP_GENUINE=1
SKIP_ONBOARDING=1
SHOW_LEGACY_NEW_ACCOUNT=1
HIGHLIGHT_I18N=1
## constants
GET_CALLS_TIMEOUT=30000
GET_CALLS_RETRY=2
SYNC_MAX_CONCURRENT=6
SYNC_BOOT_DELAY=2000
SYNC_ALL_INTERVAL=60000
CHECK_APP_INTERVAL_WHEN_INVALID=600
CHECK_APP_INTERVAL_WHEN_VALID=1200
CHECK_UPDATE_DELAY=5000
Launch storybook
We use storybook for UI development.
yarn storybook
Run code quality checks
yarn lint # launch eslint
yarn prettier # launch prettier
yarn flow # launch flow
yarn test # launch unit tests
Programmatically reset app files
# clear the dev electron user data directory
# it remove sqlite db, accounts, settings
# useful to start from a fresh state
yarn reset-files
File structure
.
โโโ dist : output folder generate by the build
โโโ scripts : commands (for building, releasing,...)
โโโ src
โ โโโ internals : code that run on the 'internal' thread.
โ โโโ main : code that run on the 'main' thread.
โ โโโ renderer : code that run on the 'renderer' thread
โ โโโ components : all the React components
| โโโ modals : sub levels for the modals
โ โโโ api : related to HTTP APIs
โ โโโ bridge : an abstraction on top of blockchains apis (libcore / js impls)
โ โโโ commands : an abstraction to run code over the internal thread
โ โโโ icons : all the icons of our app, as React components.
โ โโโ config : contains the constants,...
โ โโโ helpers : generic folder for our business logic (might be reorganized in the future)
โ โโโ middlewares : redux middlewares
โ โโโ actions : redux actions
โ โโโ reducers : redux reducers
โ โโโ sentry : for our bug tracker
โ โโโ stories : for storybook
โ โโโ styles : theme
โ โโโ logger.js : abstraction for all our console.log s
โ โโโ types : global flow types
โโโ static
โ โโโ docs
โ โโโ fonts
โ โโโ i18n
โ โโโ images
โ โโโ videos
โโโ webpack : build configuration
โโโ yarn.lock
Troubleshooting
The 'gyp==0.1' distribution was not found and is required by the application
You will need to install the python gyp module
pip install git+https://chromium.googlesource.com/external/gyp