Skip to content

webb-tools/webb-dapp

Repository files navigation

Webb Monorepo

Decentralized interfaces into the Webb protocol, featuring Tangle Network dApps for MPC-as-a-service restaking infrastructure.

GitHub Workflow Status License Apache 2.0 Follow Tangle on twitter Follow Webb on twitter Telegram Discord

Table of Contents

Table of Contents

Getting Started

This monorepo is the cornerstone for decentralized interfaces within the Webb protocol, incorporating a suite of dApps, including the revolutionary Tangle Network applications. These applications are geared towards kickstarting advanced cryptographic developments and innovations in blockchain technology, leveraging multi-party computation (MPC) services and cross-chain capabilities.

It uses nx.dev for fast and extensible building. The apps directory contains the protocol's interfaces while libs contains the necessary code and logic.

Prerequisites

This repository makes use of yarn, nodejs, and requires version node v18.12.x. To install node.js binaries, installers, and source tarballs, please visit https://nodejs.org/en/download/. Once node.js is installed you may proceed to install yarn:

  1. Run corepack enable to activate Corepack
  2. Go into your project directory
  3. Run yarn set version 4.2.2

For more information about the migration, you can refer to the Yarn documentation.

Great! Now your Node environment is ready!

Applications

  • tangle-dapp: the central hub to managing Tangle Network assets and MPC (Multi-Party Computation) services.
  • bridge-dapp: an interface for interacting and bridging assets cross-chain using Webb's Asset Protocol.
  • faucet: an interface for requesting cryptocurrencies (assets) on the Webb Protocol System.
  • hubble-stats: an interface for displaying statistical data of the Cross-chain Bridging System.
  • stats-dapp: an interface for displaying statistical data of Webb's Tangle Network (DKG system).
  • zk-explorer: a platform for discovering and learning about zero-knowledge proof projects and circuits, featuring detailed project insights, filtering options, and more.

Libraries

  • abstract-api-provider: a collection of base and abstract classes that unify the API across multiple providers.
  • api-provider-environment: contains the React context definitions, the app event, and functions for handling interactive feedback errors for the bridge app.
  • browser-utils: contains all the browser utility functions, such as fetch with caching, download file and string, the customized logger class, get browser platform, and the storage factory function for interacting with local storage.
  • dapp-config: contains all configurations (chains, wallets, etc.) for the bridge dApp.
  • dapp-types: contains all the sharable TypeScript types and interfaces across the apps.
  • icons: contains all the sharable icons across the apps.
  • note-manager: contains all the logic for storing note account data.
  • polkadot-api-provider: the Substrate (or Polkadot) provider for the bridge.
  • react-hooks: contains all the sharable hooks across the apps.
  • relayer-manager-factory: contains all the logic for interacting with the relayer.
  • tailwind-preset: the Webb TailwindCSS preset for all the apps.
  • web3-api-provider: the EVM provider for the bridge.
  • webb-ui-components: a collection of reusable components for building interfaces quickly.

Testing

The following instructions outlines how to run Webb Dapp test suite.

To run tests

yarn test

To start Storybook for component library

  1. Install dependencies by yarn

    yarn install
  2. Start the storybook:

    yarn nx storybook webb-ui-components

Visit http:https://localhost:4400/ to see the Webb Component Library!

Contributing

Interested in contributing to the Webb Dapp interface? Thank you so much for your interest! We are always appreciative for contributions from the open-source community!

If you would like to contribute, please refer to our Contribution Guide for instructions. We are excited for your first contribution!

Lint before you push!

Please ensure you lint and format your changes prior to opening a PR.

To lint:

yarn lint

To Format:

yarn format

To Build:

yarn build

Additionally, to ensure commit message consistency, this repository uses commitlint and husky. Please refer to the Commit Message Guidelines for more information.

Without proper linting, formatting, or commit message, husky will prevent you from either committing or pushing your changes.

How to release (for maintainers)

To release a new version of the projects in this monorepo, follow these steps:

  1. Create a new branch from develop.

  2. Run yarn run generate:release to review the new bump version and the changelog.

  3. If everything looks good, run yarn run generate:release -d=false to apply changes, stage, and commit them.

    3.1. If you don't want to commit the changes, run yarn run generate:release -d=false --gitCommit=false. This will only update the version and changelog files.

    3.2. There are a few options available for the generate:release script. You can check them by running yarn run generate:release --help.

  4. Push and open a PR to develop, the PR title should start with [RELEASE] in order to trigger the release workflow.

  5. After the PR is merged, the release workflow will sync the changes to the master branch if the commit message starts with [RELEASE] on the develop branch. The release workflow will also create a new release on GitHub.

License

Licensed under Apache 2.0 license.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache 2.0 license, shall be licensed as above, without any additional terms or conditions.

Need help?

If you need help or you want to additional information please:


Follow us at Follow Tangle on twitter Follow Webb on twitter Follow Webb on LinkedIn


Share the project link with your network on social media.

Share on LinkedIn Shared on Twitter Share on Telegram