/nice-node

Run a node — just press start

Primary LanguageTypeScriptMIT LicenseMIT

Run a node at home, the easy way.

Set up an Ethereum node in no-time on every modern computer without any technical knowledge (coming soon).

For the latest information, visit https://nicenode.xyz

Downloads Github All Releases gitpoap badge Twitter Discord Crowdin

Application Window Dark

Development

Test

Install

Install git, nodejs 18+, and npm.

Clone the repo and install dependencies:

git clone https://github.com/NiceNode/nice-node.git
cd nice-node
npm install

Starting Development

Start the app in the dev environment:

npm start

A window should pop open with NiceNode and a chrome devtools inspector running.

You may need to set environment variables locally. To do so, create a .env file at the top level with:

SENTRY_DSN=fake-token
MP_PROJECT_TOKEN=fake-token
MP_PROJECT_ENV=dev
NICENODE_ENV=development
CONTROLLER_API_URL=http://localhost:3000/api

SENTRY_DSN and MP_PROJECT_TOKEN should be fake unless testing. Contact Johns, @jgresham, if you want to test new error or event reporting code.

Packaging for Production

To package apps for the local platform:

npm run make

For a specific platform & architecture:

npm run make -- --platform=linux --arch=arm64
npm run make -- --arch=x64 --platform=darwin

arch options include: ia32, x64, armv7l, arm64, mips64el, universal

Tests

Unit tests with npm run test

Frontend (React) tests

npm run test -- --config vite.renderer.config.ts --dir src/__tests__/react

Backend (Nodejs) tests

npm run test -- --config vite.main.config.ts --dir src/__tests__/node

End-to-end (e2e) tests

For e2e tests, we use webdriver and an electron plugin to automate testing. It requires a packaged build to run the tests!

To run them locally, package the source first (and after making any changes to anything other than tests), then run the e2e tests with wdio

npm run make <your os and arch>
npm run wdio

Running Storybook

To run Storybook locally:

npm run storybook

Debugging ASAR and contents

npx @electron/asar extract app.asar <destfolder> can be used to determine the contents of asar

npm run package followed by mkdir outAsar and npx @electron/asar extract ./out/NiceNode-darwin-arm64/NiceNode.app/Contents/Resources/app.asar outAsar on macOS

Debugging update server (macOS and Windows)

curl https://update.electronjs.org/NiceNode/nice-node/darwin-arm64/5.2.0-alpha returns if there is an update detected by the update server. The end of the URL is -/.

Also, NiceNode app auto update logs are in ../NiceNode/logs/autoUpdater*.log.