Skip to content

⚡ A monorepo starter kit for building blockchain-based applications with ease

License

Notifications You must be signed in to change notification settings

memoriaXII/create-web3-turbo

Repository files navigation

📦 Create web3 turbo

Cover - 1

This boilerplate is based on Turborepo. It uses Yarn as a package manager. It includes the following packages/apps:

Installation

There are two ways of initializing an app using create-web3-turbo starter. You can either use this repository as a template or use Turbo's CLI to init your project:

npx create-turbo@latest -e https://github.com/memoriaXII/create-web3-turbo

Apps and Packages

  • web: A Next.js based app with typescript,wagmi,rainbowkit,ether.js
  • contracts: hardhat,typescript,chai,ethers
  • storybook: storybook
  • ui: a custom shared ui component library
  • lib: sdk library for core instances
  • config: lint and common config configurations
  • tsconfig: tsconfig.jsons used throughout the monorepo
  • husky: lint staged pre-commit check

It uses Turborepo and contains:

.github
  └─ pull_request_template
  └─ workflows
        └─ CI
.vscode
  └─ Recommended extensions and settings for VSCode users
apps
  ├─ contracts
  |   
  └─ web
  |   
  └─ storybook

packages
 ├─ config
 |   └─ lint config
 ├─ lib
     └─ sdk library for core instances
 └─ ui
     └─ a custom shared ui component library

Stack

This starter kit contains:

NOTE:

I recommend the following extension to make it easy to switch among packages in your mono repo, as well as open multiple under a single workspace. It makes mono repos work well with the test explorer extension.

link: https://marketplace.visualstudio.com/items?itemName=folke.vscode-monorepo-workspace

Get started

git clone https://github.com/memoriaXII/turborepo-web3-starter-kit.git
cd turborepo-web3-starter-kit
yarn install

Front-end

yarn dev

Smart Contracts

yarn hardhat:compile
yarn hardhat:node
yarn hardhat:test

Story Book

yarn storybook
yarn build-storybook

Docker

This repo is configured to be built with Docker, and Docker compose. To build all apps in this repo:

# Create a network, which allows containers to communicate
# with each other, by using their container name as a hostname
docker network create app_network

# Build prod using new BuildKit engine
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose -f docker-compose.yml build --parallel

# Start prod in detached mode
docker-compose -f docker-compose.yml up -d

Open http://localhost:3000.

To shutdown all running containers:

# Stop all running containers
docker kill $(docker ps -q) && docker rm $(docker ps -a -q)