Skip to content
This repository has been archived by the owner on Jun 23, 2020. It is now read-only.

nearprotocol/NEARStudio

Repository files navigation

NEAR Studio

Build Status

NEAR Studio is a cloud IDE for development of NEAR Protocol smart contracts and DApps.

It's heavily based on WebAssembly Studio.

Demo GIF

Dockerized Studio

Dockerized studio operates as a micro-service. It uses nginx to serve the local static content. As the result, Studio is not parametrizable with environment variables. All configs of Near Studio are currently available in config.json and are used to generate the static content.

Running your own local copy of the website

To run a local copy, you will need to install node.js and webpack on your computer, then run the following commands:

yarn

To build NEAR Studio whenever a file changes run:

yarn build-watch

To start a dev web server run:

yarn dev-server

Before submitting a pull request run:

yarn test

Deploying in production

Build for production:

yarn build

Deploy (need to have sudo on near-studio server):

./deploy.sh

Contributing

If you want to contribute upstream to WebAssemblyStudio, please get familiar with the contributing guide.

Join our Discord if you want to help with NEAR-specific stuff or just stay in touch with development progress.

We also have Telegram with more curated updates.

Credits

This project depends on several excellent libraries and tools:

  • WebAssembly Studio is used as a skeleton for our IDE.

  • Monaco Editor is used for rich text editing, tree views and context menus.

  • WebAssembly Binary Toolkit is used to assemble and disassemble .wasm files.

  • Binaryen is used to validate and optimize .wasm files.

  • Clang Format is used to format C/C++ files.

  • Cassowary.js is used to make split panes work.

  • Showdown is used to automatically preview .md files.

  • Capstone.js is used to disassemble x86 code.

  • AssemblyScript is used to compile TypeScript smart contracts into WebAssembly.

  • bignum.wasm Provides big numbers (128-bit and more) implementation for use with AssemblyScript.

  • BigInteger.js Provides big numbers (arbitrary length) implementation for use in JS host code for smart contracts.

  • LLVM, Rust, Emscripten running server side.

  • And of course: React, WebPack, TypeScript and TSLint.