Skip to content
/ web3-scaffold Public template
forked from holic/web3-scaffold

Quickly get up and running on web3

Notifications You must be signed in to change notification settings

0xhitgo/web3-scaffold

 
 

Repository files navigation

web3 scaffold

Quickly get up and running on web3

This scaffold is set up as a monorepo using the incredibly fast pnpm, with packages for each part of the project. All of these packages use a common Typescript foundation with linting and autoformatting and is best used with VSCode. It assumes you'll be deploying to an EVM-compatible blockchain.

Packages

app

This is the frontend of your project. It's built on Next.js using Tailwind CSS. Data is read from the smart contract via a subgraph (below) using urql and autogenerated Typescript definitions with GraphQL Code Generator.

contracts

This is where your smart contracts live. They're written in Solidity using Foundry (forge & cast) to compile, test, and deploy. Types are generated with TypeChain.

subgraph

This is the read-only backend for your project and where you can offload a lot of the heavy lifting that would traditionally be done through an eth RPC node. It's written in AssemblyScript and deployed to The Graph.

Deploying

Vercel

Vercel supports monorepos and pnpm out-of-the-box, but you'll need to set the "Root Directory" to packages/app either during the Vercel project setup or afterwards in the project settings.

Misc install notes

If the submodules in forge are not working, you can remove the directories and reinstall directly with forge:

$ forge install chiru-labs/ERC721A --no-commit

$ forge install foundry-rs/forge-std --no-commit

$ forge install OpenZeppelin/openzeppelin-contracts --no-commit

If you install any other submodules, remember to re-run the mappings:

$ forge remappings > remappings.txt 

If you need to install jq for Mac (used to in the contracts/deploy.sh script), run:

$ brew install jq

About

Quickly get up and running on web3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 68.0%
  • JavaScript 27.9%
  • Solidity 3.7%
  • Shell 0.4%