Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/holic/web3-scaffold

Quickly get up and running on web3
https://github.com/holic/web3-scaffold

Last synced: 3 months ago
JSON representation

Quickly get up and running on web3

Lists

README

        

# web3 scaffold

_Quickly get up and running on web3_

This scaffold is set up as a monorepo using the incredibly fast [pnpm](https://pnpm.io/), with packages for each part of the project. All of these packages use a common [Typescript](https://www.typescriptlang.org/) foundation with [linting](https://eslint.org/) and [autoformatting](https://prettier.io/) and is best used with [VSCode](https://code.visualstudio.com/). It assumes you'll be deploying to an [EVM-compatible blockchain](https://chainlist.org/).

## Packages

### app

This is the frontend of your project. It's built on [Next.js](https://nextjs.org/) using [Tailwind CSS](https://tailwindcss.com/). Data is read from the smart contract via a subgraph (below) using [urql](https://formidable.com/open-source/urql/) and autogenerated Typescript definitions with [GraphQL Code Generator](https://www.graphql-code-generator.com/).

### contracts

This is where your smart contracts live. They're written in [Solidity](https://docs.soliditylang.org/) using [Foundry (forge & cast)](https://book.getfoundry.sh/) to compile, test, and deploy. Types are generated with [TypeChain](https://github.com/dethcrypto/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](https://www.assemblyscript.org/) and deployed to [The Graph](https://thegraph.com/).

## 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
```