# 🏗 Scaffold-ETH 2 | Docs > Open-source toolkit for building dapps ## Docs - [✅ Disabling Type and Linting Error Checks](/disable-type-linting-error-checks): TypeScript helps you catch errors at compile time, which can save time and improve code quality, but can be challenging for those who are new to the language or who are used to the more dynamic nature of JavaScript. These sections show the steps required to disable type & lint checks on different levels. - [Get the Current Balance of the Connected Account](/recipes/GetCurrentBalanceFromAccount): This recipe shows how to fetch and display the ETH balance of the currently connected account. - [Read a ](/recipes/ReadUintFromContract): This recipe demonstrates how to read data from contract functions and display it on the UI. We'll showcase an example that accepts some arguments (parameters), and another with no arguments at all. - [Wagmi ](/recipes/WagmiContractWriteWithFeedback): This recipe demonstrates how to create a button for contract interaction using the "useTransactor" and "useWriteContract" hooks from the "wagmi" library. The interaction includes the capability to provide feedback on the transaction status when using wagmi `useWriteContract`. - [Write to a Contract with ](/recipes/WriteToContractWriteAsyncButton): This recipe shows how to implement a button that allows users to interact with a smart contract by executing the `writeContractAsync` function returned by [useScaffoldWriteContract](/hooks/useScaffoldWriteContract). By following this guide, you can create a user interface for writing data to a contract. - [Add a custom chain](/recipes/add-custom-chain): This recipe demonstrates how to add a custom chain to your project. We'll use Base as an example, but you can apply this process to any other chain you want to add. Scaffold-ETH 2 uses [viem/chains](https://viem.sh/docs/chains/introduction) as a list of chains. Normally, Base already exists in viem/chains and [you can import it and use it](/deploying/deploy-nextjs-app#--targetnetworks), but we're going to add it manually to show you how to do it. - [Environment](/quick-start/environment): Now that our installation is complete, let's configure the development environment for Scaffold ETH-2. - [Installation](/quick-start/installation): Before you begin, you need to install the following tools: - [🛠 Interacting with Your Smart Contracts](/hooks): Scaffold-ETH 2 provides a collection of custom React hooks designed to simplify interactions with your deployed smart contracts. These hooks are wrappers around Wagmi, an easy-to-use interface with typescript autocompletions for reading from, writing to, and monitoring events emitted by your smart contracts. - [useDeployedContractInfo](/hooks/useDeployedContractInfo): Use this hook to fetch details about a deployed smart contract, including the ABI and address. - [useScaffoldContract](/hooks/useScaffoldContract): Use this hook to get your contract instance by providing the contract name. It enables you to interact with your contract methods. For reading data or sending transactions, it's recommended to use `useScaffoldReadContract` and `useScaffoldWriteContract`. - [useScaffoldEventHistory](/hooks/useScaffoldEventHistory): Use this hook to retrieve historical event logs for your smart contract, providing past activity data, with the option to watch for new events. - [useScaffoldReadContract](/hooks/useScaffoldReadContract): Use this hook to read public variables and get data from read-only functions of your smart contract. - [useScaffoldWatchContractEvent](/hooks/useScaffoldWatchContractEvent): Use this hook to subscribe to events emitted by your smart contract, and receive real-time updates when these events are emitted. - [useScaffoldWriteContract](/hooks/useScaffoldWriteContract): Use this hook to send a transaction to your smart contract to write data or perform an action. - [useTransactor](/hooks/useTransactor): Use this hook to interact with the chain and give UI feedback on the transaction status. - [📡 Interacting with External Contracts](/external-contracts): If you need to interact with external contracts (i.e. not deployed with your SE-2 instance, e.g [`DAI`](https://etherscan.io/token/0x6b175474e89094c44da98b954eedeac495271d0f#code) contract) you can add external contract data to your `packages/nextjs/contracts/externalContracts.ts` file, which would let you use Scaffold-ETH 2 [custom hooks](/hooks). - [Creating Your Own Extension](/extensions/createExtensions): This section will help you develop custom extensions for Scaffold-ETH 2, from simple additions to more complex modifications. - [How to Install Extensions](/extensions/howToInstall): This guide explains what are extensions and how to use them in your Scaffold-ETH 2 project. - [Deploy Your NextJS App](/deploying/deploy-nextjs-app): Deploy to [Vercel](#deploy-to-vercel) or [IPFS](#deploy-to-ipfs). - [Deploy Your Smart Contracts](/deploying/deploy-smart-contracts): To deploy your smart contracts to a live network, there are a few things you need to adjust. - [Issues](/contributing/Issues): Issues should be used to report problems, request a new feature, or discuss potential changes before a PR is created. - [🙏 Contributing to Scaffold-ETH 2](/contributing): We welcome contributions to Scaffold-ETH 2! - [Pull Requests](/contributing/pullRequests): We follow the ["fork-and-pull" Git workflow](https://github.com/susam/gitpr) - [Address](/components/Address): Display an address (or ENS) along with a utility icon to copy the address. If the address is associated with an ENS that has an avatar, this avatar will be displayed. If not, a blockie image representation of the address will be shown. - [AddressInput](/components/AddressInput): Display an Ethereum address input that validates the address format, resolves ENS domains, and shows their avatars. - [Balance](/components/Balance): Displays the balance of a given address in both ether (ETH) and US dollars (USD). - [BaseInput](/components/BaseInput): Simple building block for creating an input which comes with basic default styles (colors, rounded borders). - [BlockieAvatar](/components/BlockieAvatar): Show a blockie (bar code profile icon) component for a given public address. - [EtherInput](/components/EtherInput): Displays an input field for ETH/USD amount, with an option to convert between ETH and USD. - [IntegerInput](/components/IntegerInput): Provides an input field for integer values, validating that user input is a valid integer, and showing error if not.\ Shows by default a small button to multiply input's value \* 10^18 to transform to wei. - [RainbowKitCustomConnectButton](/components/RainbowKitCustomConnectButton): Scaffold-ETH 2 uses a custom *"Connect Button"*, based on RainbowKit, that is enhanced with several useful features: - [⚙ Components](/components): Scaffold-ETH 2 provides a set of pre-built components for common web3 use cases. You can make use of them to accelerate and simplify your dapp development. - [AGENTS.md](/build-with-ai/agents-md): `AGENTS.md` is a markdown file at the root of every Scaffold-ETH 2 project. It gives AI coding agents structured context about your project: architecture, commands, code style, and available skills. The agent reads it when it enters your project directory so it can write correct code without guessing. - [Drizzle ORM + Neon PostgreSQL Integration for Scaffold-ETH 2](/build-with-ai/drizzle-neon): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [EIP-5792 Integration for Scaffold-ETH 2](/build-with-ai/eip-5792): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [ERC-721 NFT Integration for Scaffold-ETH 2](/build-with-ai/erc-721): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [Develop Smart Contracts with OpenZeppelin](/build-with-ai/openzeppelin): Adapted from [OpenZeppelin's official skill](https://github.com/OpenZeppelin/openzeppelin-skills) for Scaffold-ETH 2 Solidity projects. - [Ponder Integration for Scaffold-ETH 2](/build-with-ai/ponder): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [Sign-In with Ethereum (SIWE) for Scaffold-ETH 2](/build-with-ai/siwe): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [Skills](/build-with-ai/skills): Skills are markdown files (`SKILL.md`) that teach AI agents how to add specific features to your SE-2 project. Each one covers the prerequisites, implementation patterns, common gotchas of smart contracts / frontend, and how the feature connects to SE-2's hooks and components. They live in your project at `.agents/skills//SKILL.md`, and your agent reads them before implementing a feature so it follows proven patterns instead of guessing. - [The Graph Subgraph Integration for Scaffold-ETH 2](/build-with-ai/subgraph): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [x402 Payment Protocol Integration for Scaffold-ETH 2](/build-with-ai/x402): Check if `./packages/nextjs/scaffold.config.ts` exists directly in the current working directory (do not search subdirectories). If it doesn't exist, this is not a Scaffold-ETH 2 project. Follow the instructions at [https://docs.scaffoldeth.io/SKILL.md](https://docs.scaffoldeth.io/SKILL.md) to scaffold it first. If it exists, continue directly with building. - [🤖 Build with AI](/build-with-ai): Scaffold-ETH 2 is built for AI coding agents like [Claude Code](https://claude.ai/code), [Cursor](https://cursor.sh), [Cline](https://github.com/cline/cline), and others.