/ShadowNode

Use Node.js in your end devices :)

Primary LanguageJavaScriptOtherNOASSERTION

ShadowNode

The Node.js runtime in shadow, enables N-API and vast Node.js packages on edge devices.

Codacy Badge Build Status License FOSSA Status

The project is another runtime for your Node.js packages, while ShadowNode is designed to be used on memory limited devices. It's inspired and forked from the awesome project Samsung/iotjs.

Quick Start

To get started with ShadowNode, you could download prebuilt binaries on Release Page for following targets:

  • Linux x64
  • macOS x64

Memory usage and binary footprint are measured at here with real target daily.

Documentation

Build

Fetch source code
$ git clone https://github.com/Rokid/ShadowNode.git
$ cd ShadowNode
Build ShadowNode
$ npm run build
Get available build options
$ tools/build.py --help
Install
$ tools/build.py --install
Run tests
$ npm test

For additional information see Getting Started.

Compared with Node.js

ShadowNode is not designed to be ran identical code that ran on Node.js. While edge environments are experiencing limited resources on runtime, the packages to be ran on ShadowNode shall be rewritten in a resource compact way. However for the very initial thought of sharing the Node.js vast module ecosystem, we would like make ShadowNode compatible with Node.js with our efforts.

Since the MQTT protocol is commonly used for communication between IoT devices, ShadowNode supports the protocol natively, and keeps the API consistent with the popular library MQTT.js. See MQTT API for details.

The WebSocket is a popular protocol in IoT environment as well, and also supported by ShadowNode natively. See WebSocket API.

For hardware geek, this project benefits from the upstream IoT.js, which has supported the following hardware interfaces, you are able to port ShadowNode to your platforms and start hacking with JavaScript:

License

ShadowNode is Open Source software under the Apache 2.0 license. Complete license and copyright information can be found within the code.