A Status client reference implementation using Status-JS.
WIP. DO NOT USE IN PRODUCTION. HIGH RISK ⚠
## Install
Currently Status-JS-desktop relies on Geth, ensure that [**Geth**](https://github.com/ethereum/go-ethereum/wiki/Installing-Geth) is installed.
In the future we plan for this to be bundled with status-js-desktop or use [**MurMur**](https://github.com/status-im/murmur).
clone the repo via git:
```bash
git clone https://github.com/status-im/status-js-desktop.git
```
And then install the dependencies with yarn.
```bash
$ cd status-js-desktop
$ yarn
```
## Run
Start Geth with shh flags
```bash
$ geth --testnet --syncmode=light --ws --wsport=8546 --wsaddr=localhost --wsorigins=file:// --maxpeers=25 --shh --shh.pow=0.002 --wsapi=eth,web3,net,shh,debug console
```
Start the app in the `dev` environment. This starts the renderer process in [**hot-module-replacement**](https://webpack.js.org/guides/hmr-react/) mode and starts a webpack dev server that sends hot updates to the renderer process:
```bash
$ yarn dev
```
If you don't need autofocus when your files was changed, then run `dev` with env `START_MINIMIZED=true`:
```bash
$ START_MINIMIZED=true yarn dev
```
## Packaging
To package apps for the local platform:
```bash
$ yarn package
```
To package apps for all platforms:
First, refer to the [Multi Platform Build docs](https://www.electron.build/multi-platform-build) for dependencies.
Then,
```bash
$ yarn package-all
```
To package apps with options:
```bash
$ yarn package --[option]
```
To run End-to-End Test
```bash
$ yarn build-e2e
$ yarn test-e2e
# Running e2e tests in a minimized window
$ START_MINIMIZED=true yarn build-e2e
$ yarn test-e2e
```
:bulb: You can debug your production build with devtools by simply setting the `DEBUG_PROD` env variable:
```bash
DEBUG_PROD=true yarn package
```
## CSS Modules
This boilerplate is configured to use [css-modules](https://github.com/css-modules/css-modules) out of the box.
All `.css` file extensions will use css-modules unless it has `.global.css`.
If you need global styles, stylesheets with `.global.css` will not go through the
css-modules loader. e.g. `app.global.css`
If you want to import global css libraries (like `bootstrap`), you can just write the following code in `.global.css`:
```css
@import '~bootstrap/dist/css/bootstrap.css';
```
## SASS support
If you want to use Sass in your app, you only need to import `.sass` files instead of `.css` once:
```js
import './app.global.scss';
```
## Static Type Checking
This project comes with Flow support out of the box! You can annotate your code with types, [get Flow errors as ESLint errors](https://github.com/amilajack/eslint-plugin-flowtype-errors), and get [type errors during runtime](https://github.com/codemix/flow-runtime) during development. Types are completely optional.
## Dispatching redux actions from main process
See [#118](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118) and [#108](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108)