Home

Awesome

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 Developer Hub.

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. To learn how this template was built, visit the Substrate Front-End Tutorial.

Using The Template

Installation

The code can be installed using git and yarn.

# Clone the repository
git clone https://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.

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.

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

More on React environment variables.

When writing and deploying your own front end, you should configure:

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.

{
  socket,
  types,
  keyring,
  keyringState,
  api,
  apiState,
}

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/ChainState.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.