The XAYA wallet uses Angular and Electron to build the wallet.
Clone this repository locally:
git clone https://github.com/xaya/xaya_electron.git
Install dependencies with npm :
npm install
There is an issue with yarn
and node_modules
that are only used in Electron
on the backend when the application is built by the packager. Please use npm
as the dependencies manager.
npm install -g @angular/cli
- In a terminal window -> npm start
- Using local variables:
npm start
orcross-env ENV=local npm start
- Using development variables:
cross-env ENV=dev npm start
- Using production variables:
cross-env ENV=prod npm start
Command | Description |
---|---|
npm run ng:serve |
Execute the app in the browser. |
npm run build |
Build the app. Your built files are in the /dist folder. |
npm run build:prod |
Build the app with Angular aot. Your built files are in |
the /dist folder. | |
npm run electron:local |
Builds your application and starts Electron. |
npm run electron:linux |
Builds your application and creates an app consumable |
on a Linux system. | |
npm run electron:windows |
On a Windows OS, builds your application and |
creates an app consumable in Windows 32- and 64-bit systems. | |
npm run electron:mac |
On a MAC OS, i.e. OS X, builds your application and |
generates a .app file of your application that can be run on OS X. |
Place the daemon into the "daemon" folder before running or building. The daemon parameters are mostly hardcoded, although advanced users can still create *.conf file manually.
Webpack is configured inside angular-cli.json at a high-level or inside ngw.config.ts for low-level injections. Do not use 'ng eject', as this will break angular-cli. Note that 'ngw' is used in package.json for that purpose instead of 'ng'.
It's basically built on top of an Angular-Electron boilerplate. You can develop the GUI as a simple Angular application inside the 'app' folder. The daemon communication is done via 'global.service.ts'. It's based on the bitcoin-core node, which you simply expand with new functions, as shown in 'global.service.ts'. The main entry point is src/main.ts, if you want to alter anything related to the Electron window.