GithubHelp home page GithubHelp logo

stojanov-igor / substrate-front-end-template Goto Github PK

View Code? Open in Web Editor NEW

This project forked from substrate-developer-hub/substrate-front-end-template

0.0 0.0 0.0 114.92 MB

A Polkadot.js API + React based template for building Substrate Front Ends

Home Page: https://substrate.dev/substrate-front-end-template/

License: The Unlicense

HTML 4.24% JavaScript 95.42% CSS 0.34%

substrate-front-end-template's Introduction

Substrate Front End Template

This template allows you to create a front-end application that connects to a Substrate node back-end with minimal configuration. To learn about Substrate itself, visit the Substrate Documentation.

The template is built with Create React App and Polkadot JS API. Familiarity with these tools will be helpful, but the template strives to be self-explanatory.

Using The Template

Install Locally

The codebase is installed using git and yarn. Make sure you have installed yarn globally prior to installing it within the subdirectories. For the most recent version and how to install yarn, please refer to Yarn documentation and installation guides.

# Clone the repository
git clone https://github.com/substrate-developer-hub/substrate-front-end-template.git
cd substrate-front-end-template
yarn install

Usage

You can start the template in development mode to connect to a locally running node

yarn start

You can also build the app in production mode,

yarn build

and open build/index.html in your favorite browser.

Try the Hosted Version

Connecting to your local Substrate node (Chrome and Firefox only):

https://substrate-developer-hub.github.io/substrate-front-end-template?rpc=ws://localhost:9944

Connecting to Polkadot:

https://substrate-developer-hub.github.io/substrate-front-end-template?rpc=wss://rpc.polkadot.io

Configuration

The template's configuration is stored in the src/config directory, with common.json being loaded first, then the environment-specific JSON file, and finally environment variables, with precedence.

  • development.json affects the development environment
  • test.json affects the test environment, triggered in yarn test command.
  • production.json affects the production environment, triggered with the yarn build command.

To deploy your own front-end to production, you need to configure:

  • PROVIDER_SOCKET in src/config/production.json pointing to your own deployed node.

Some environment variables are read and integrated in the template config object, including:

  • REACT_APP_PROVIDER_SOCKET overriding config[PROVIDER_SOCKET]

More on React environment variables.

How to Specify the WebSocket to Connect to

There are two ways to specify the websocket to connect to:

  • With PROVIDER_SOCKET in {common, development, production}.json.
  • With rpc=<ws or wss connection> query parameter after the URL. This overrides the above setting.

Reusable Components

useSubstrate Custom Hook

The custom hook useSubstrate() provides access to the Polkadot js API and thus the keyring and the blockchain itself. Specifically it exposes this API.

{
  setCurrentAccount: func(acct) {...}
  state: {
    socket,
    keyring,
    keyringState,
    api,
    apiState,
    currentAccount
  }
}
  • socket - The remote provider socket it is connecting to.
  • keyring - A keyring of accounts available to the user.
  • keyringState - One of "READY" or "ERROR" states. keyring is valid only when keyringState === "READY".
  • api - The remote api to the connected node.
  • apiState - One of "CONNECTING", "READY", or "ERROR" states. api is valid only when apiState === "READY".
  • currentAccount - The current selected account pair in the application context.
  • setCurrentAccount - Function to update the currentAccount value in the application context.

If you are only interested in reading the state, there is a shorthand useSubstrateState() just to retrieve the state.

TxButton Component

The TxButton handles basic query and transaction requests to the connected node. You can reuse this component for a wide variety of queries and transactions. See src/Transfer.js for a transaction example and src/Balances.js for a query example.

Account Selector

The Account Selector provides the user with a unified way to select their account from a keyring. If the Balances module is installed in the runtime, it also displays the user's token balance. It is included in the template already.

Miscellaneous

  • Polkadot-js API and related crypto libraries depend on BigInt that is only supported by modern browsers. To ensure that react-scripts properly transpile your webapp code, update the package.json file:

    {
      "browserslist": {
        "production": [
          ">0.2%",
          "not ie <= 99",
          "not android <= 4.4.4",
          "not dead",
          "not op_mini all"
        ]
      }
    }

    Refer to this doc page.

substrate-front-end-template's People

Contributors

shawntabrizi avatar jimmychu0807 avatar joshorndorff avatar ltfschoen avatar dependabot[bot] avatar nuke-web3 avatar riusricardo avatar shirshak55 avatar wheresaddie avatar 99kies avatar jeffanthony avatar k-gunjan avatar manuelandro avatar naterarmstrong avatar n3wborn avatar tarikgul avatar tbaut avatar armatrix avatar marlowl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.