Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/memoriaXII/create-web3-turbo
⚡ A monorepo starter kit for building blockchain-based applications with ease
https://github.com/memoriaXII/create-web3-turbo
ethereum-dapp ethersjs hardhat nextjs react smart-contracts solidity tailwindcss turborepo typescript wagmi web3
Last synced: about 3 hours ago
JSON representation
⚡ A monorepo starter kit for building blockchain-based applications with ease
- Host: GitHub
- URL: https://github.com/memoriaXII/create-web3-turbo
- Owner: memoriaXII
- License: mit
- Created: 2022-03-27T09:18:46.000Z (over 2 years ago)
- Default Branch: dev
- Last Pushed: 2023-10-28T02:09:49.000Z (about 1 year ago)
- Last Synced: 2024-05-19T02:11:33.386Z (6 months ago)
- Topics: ethereum-dapp, ethersjs, hardhat, nextjs, react, smart-contracts, solidity, tailwindcss, turborepo, typescript, wagmi, web3
- Language: TypeScript
- Homepage:
- Size: 6.43 MB
- Stars: 133
- Watchers: 6
- Forks: 22
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# 📦 Create web3 turbo
This boilerplate is based on [Turborepo](https://github.com/vercel/turborepo).
It uses [Yarn](https://classic.yarnpkg.com/lang/en/) 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:
```bash
npx create-turbo@latest -e https://github.com/memoriaXII/create-web3-turbo
```### Apps and Packages
- `web`: A [Next.js](https://nextjs.org) 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.json`s used throughout the monorepo
- `husky`: lint staged pre-commit checkIt uses [Turborepo](https://turborepo.org/) and contains:
```
.github
└─ pull_request_template
└─ workflows
└─ CI
.vscode
└─ Recommended extensions and settings for VSCode users
apps
├─ contracts
|
└─ web
|
└─ storybookpackages
├─ config
| └─ lint config
├─ lib
└─ sdk library for core instances
└─ ui
└─ a custom shared ui component library
```### Stack
This starter kit contains:
- [Next.js](https://nextjs.org) framework
- [WAGMI Hooks](https://github.com/tmm/wagmi) advanced web3 react hooks
- [ethers.js](https://github.com/ethers-io/ethers.js) integrate with blockchain
- [Tailwind](https://tailwindui.com/) Utility-First Fundamentals
- [Typechain](https://github.com/dethcrypto/TypeChain) to keep those end-to-end types generated from ABIs
- [Hardhat](https://hardhat.org/) Deploy && compile smart Contracts### 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)
```