asgardex v0.0.5
ASGARDEX uses following libraries, frameworks and more:
(in alphabetical order)
- Ant Design
- Create React App
- ESLint
- Electron
- fp-ts
- Jest
- Observable Hooks
- Prettier
- ReactJS
- Styled Components
- Testcafe
- THORChain Byzantine Module
- RxJS
- Typescript
- and others ...
Install
It's recommended to use a Node version as same as Electron is running with (currently: Electron v9.1.2 / Node 12.14.1)
git clone https://github.com/thorchain/asgardex-electron.git asgardex
cd asgardex
yarnEnvironment variables
While environment variables are not required (defaults are set), you can configure them. Create an .env file by copying all content of .env.sample and change these for your needs.
Development
- Build sources needed by
mainprocess (only once or whenever you change something inpreload.tsorelectron.ts)
yarn prebuild- Build everything needed by
rendererprocess and run application inwatchmode
yarn devIn case Node@12 might run into memory issues locally set --max-old-space-size as follow:
export NODE_OPTIONS="--max-old-space-size=4096"How to auto-unlock a locked wallet while hot-reloading the app (for development only, disabled in production build)
Use REACT_APP_WALLET_PASSWORD to run the app by replacing password with your own password
REACT_APP_WALLET_PASSWORD=password yarn devOr add to REACT_APP_WALLET_PASSWORD=password to .env file and run yarn dev
How to enable (more) chains for development
Add chains you want to have for development to REACT_APP_CHAINS_ENABLED, for example
REACT_APP_CHAINS_ENABLED=THOR,BNB,BTC,ETH,LTCNote: String of chains have to be as same as definitions in xchain-util
Tests
unit
yarn teste2e
Note: e2e tests are disabled temporary (see #750)
yarn test:e2elint
yarn lintNote: eslint is provided by react-scripts located in ./node_modules/react-scripts/node_modules/ and don't need to be extra installed. If your editor has some issues to find eslint, you might point it to this location (see VSCode settings file as an example).
bundle analyze
visualize the bundle map using source-map-explorer
yarn analyzeFolder structure
src
src
├── index.ts # entry point for CRA
├── main # sources of Electron's main process
├── renderer # sources of Electron's renderer process (aka webapp)
└── shared # shared sources for Electron's main and renderer processessrc/main (Electron's "main" app)
src/main
├── electron.ts # entry point
├── i18n # internationalization (needed for menus)
└── menu # "native" menussrc/renderer (Electron's "renderer" app aka ReactJS webapp)
src/renderer
├── assets # static files (svg, fonts etc.)
├── components # basic components
├── contexts # React contexts to provide "global" accessible states (RxJS based)
├── helpers # helper functions
├── hooks # custom hooks
├── i18n # internationalization (translations etc.)
├── index.tsx # entry point
├── routes # routing
├── services # RxJS based IO handler and states (consumed by contexts)
├── types # TypeScript types (e.g. generated types for Midgard API)
└── views # "Container" componentsSecurity
ASGARDEX follows security recommendation made by Electron team, such as:
- Disable the Node.js integration in renderers that display remote content
- Enable context isolation in renderers that display remote content
- Expose IPC-based APIs to provide one method per IPC message
- Disable the remote module
- Do not use openExternal with untrusted content. Provided hostnames are defined in
EXTERNALS_WHITELIST, all others are blocked. This list has to be extended if needed. - Use a current version of Electron
Packaging
Important note for macOS users: Please follow guide of "How to package ASGARDEX on macOS" before running following command.
yarn package:electronKeystore
By creating a new wallet or importing an existing one, ASGARDEX is saving wallet's phrase encrypted in keystore.json on your machine in Electron's appData folder at following location:
Windows
# ASGARDEX installed from *.exe
%APPDATA%/ASGARDEX/storage/keystore.json
# ASGARDEX built and run locally
%APPDATA%/Electron/storage/keystore.jsonmacOS
# ASGARDEX installed from *.dmg
~/Library/Application Support/ASGARDEX/storage/keystore.json
# ASGARDEX built and run locally
~/Library/Application Support/Electron/storage/keystore.jsonLinux
# ASGARDEX installed from *.deb
~/.config/ASGARDEX/storage/keystore.json
# ASGARDEX built and run locally
~/.config/Electron/storage/keystore.jsonkeystore.json can be removed in ASGARDEX by clicking "Remove wallet" in Wallet -> Settings or by removing it manually.
Releasing
See RELEASE.md
Docs
See the docs and guides here
Contributing
Please see the Contributing Guidelines here (coming soon).
Bug Reports
Please see the Bug Report Process here (coming soon).
License
MIT THORChain
5 years ago