This is Nouns Builder front-end mono-repo. You can find Nouns Builder deployed on:
For an introduction to Nouns Builder and its concept, you can find further documentation here. You can also find Nouns Protocol here.
apps
web
: Nouns Builder front-endsubgraph
: Nouns Builder subgraph
packages
blocklist
: Package to check for sanctioned wallet addressesanalytics
: Shareable analytics packagezoralabs-zord
: Shareable ui componentseslint-config-custom
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)tsconfig
:tsconfig.json
s used throughout the monorepoipfs-service
: api to for image uploads to ipfs
-
Clone this repo locally
-
Add the required environment variables
-
Install dependencies across all apps and packages
pnpm i
- Once environment variables are defined, you can run the app in dev mode
pnpm dev
Note: linting and prettier formatting are automatically run on pre-push hooks
To lint:
pnpm run lint
To format:
pnpm run format
To run type checks:
pnpm run type-check
> pnpm run build
> pnpm run start
This app has several third party api keys that you need in order to run Builder:
- alchemy as the main rpc node provider in addition to mainnet forks for testing
- tenderly in order to simulate transactions
- etherscan to dyanamically fetch abis
We ask that you supply your own secrets locally for running in development environment. Non-secret environment variables are already included in the .env
files in this repo.
Add the following variables to .env.local
within this root directory (needed to run tests against a local anvil node):
#alchemy
PRIVATE_ALCHEMY_ID=<ALCHEMY_API_KEY>
ANVIL_FORK_URL=https://eth-mainnet.alchemyapi.io/v2/$PRIVATE_ALCHEMY_ID
ANVIL_BLOCK_NUMBER=8305745
Add the following variables to apps/web/.env.local
:
#alchemy
NEXT_PUBLIC_TENDERLY_RPC_KEY=<ALCHEMY_API_KEY>
#tenderly
TENDERLY_ACCESS_KEY=<API_KEY>
TENDERLY_PROJECT=<PROJECT_NAME>
TENDERLY_USER=<ACCOUNT_NAME>
#etherscan (optional to run locally, this is for dynamically fetching abis in the custom transaction builder)
ETHERSCAN_API_KEY=<ETHERSCAN_API_KEY>
#optional zora api key
NEXT_PUBLIC_ZORA_API_KEY=
Note: to run tests you need to install anvil.
Once anvil is installed, you can now locally run anvil (from the root directory in the monorepo) in a separate terminal session to start a local ethereum node:
pnpm run anvil
Now you can run the tests in a separate terminal session:
pnpm run test
You can also run the tests in watchmode, which will react to any source code or test files changing. To do that, run:
pnpm run test:watch
The Nouns Builder client is deployed on Vercel. Any pull requests will trigger a new preview deployment providing you with an environment to test out and preview changes.
The Nouns Builder subgraph is deployed for the following networks:
- Ethereum Mainnet
- Ethereum Goerli
- Optimism Mainnet
- Optimism Goerli
- Zora Mainnet
- Zora Goerli
- Base Mainnet
- Base Goerli
Please refer to our contributions guideline on how best to contribute.
Feel free to reach out to us via twitter, discord, or via email at opensource@zora.co