> For the complete documentation index, see [llms.txt](https://docs.iotex.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iotex.io/blockchain/build/web3-development/set-up-your-environment.md).

# Set up your Environment

## Overview

Setting up your development environment for IoTeX involves choosing the right Web3 tools and frameworks to streamline your workflow.&#x20;

Popular options include [Hardhat](https://hardhat.org/), [Truffle](https://www.trufflesuite.com/), and [Brownie](https://eth-brownie.readthedocs.io/en/stable/). These frameworks offer robust Dapp testing, deployment, and debugging capabilities. Once you are ready to deploy your smart contracts to the testnet or mainnet, you simply need to change the RPC endpoint in your tools configuration.&#x20;

[→ See IoTeX RPC Endpoints (full-node)](/blockchain/build/web3-development/rpc-endpoints.md)

[→ See IoTeX RPC Endpoints (archive-node) ](/blockchain/build/web3-development/rpc-endpoints.md#archive-node)

Below is a list of popular development tools for EVM Dapp development. Each of these tools offers unique features and functionalities that can help streamline your Dapp development workflow.

{% hint style="info" %}
For detailed tutorials and guides on building and deploying smart contracts on IoTeX [→ visit the Build section of our documentation.](/blockchain/build/defi.md)
{% endhint %}

## Development Frameworks

1. [**Hardhat**](https://hardhat.org/): A flexible and extensible framework that helps developers compile, deploy, test, and debug their Ethereum software.
2. [**Truffle**](https://www.trufflesuite.com/): A development environment, testing framework, and asset pipeline for Ethereum, aimed at making life as an Ethereum developer easier.
3. [**Brownie**](https://eth-brownie.readthedocs.io/en/stable/): A Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine (EVM).
4. [**Foundry (Forge)**](https://getfoundry.sh/): A fast, portable, and modular toolkit for Ethereum application development. Forge is the command-line tool for Foundry, providing robust smart contract development and testing capabilities.

## Integrated Development Environments (IDEs)

6. [**IoTeX Dev Portal**](https://developers.iotex.io)**:** the one-stop-shop for any IoTeX Developer. Claim test tokens, deploy tokens and explore the DePIN sandbox from a simple web interface.
7. [**Remix**](https://remix.ethereum.org/#lang=en\&optimize=false\&runs=200\&evmVersion=null\&version=soljson-v0.8.26+commit.8a97fa7a.js): A web-based IDE for writing, compiling, testing, and deploying smart contracts.

## Libraries and SDKs

6. [**Web3.js**](https://web3js.readthedocs.io/en/v1.7.0/): A JavaScript library that allows you to interact with the Ethereum blockchain using HTTP, IPC, or WebSocket.
7. [**Ethers.js**](https://docs.ethers.org/): A complete and compact library for interacting with the Ethereum blockchain and its ecosystem.
8. [**MetaMask SDK**](https://metamask.io/sdk/): Provides tools and APIs for building DApps with MetaMask, enabling seamless integration and enhanced functionalities.

## Testing Tools

9. [**EthTester**](https://github.com/ethereum/eth-tester): A tool suite for testing Ethereum-based applications.
10. [**Foundry (Anvil)**](https://github.com/foundry-rs/): A local Ethereum node implemented in Rust, similar to Ganache, for fast and reliable testing.

## Debugging Tools

10. [**Tenderly**](https://tenderly.co/): A monitoring, debugging, and analytics platform for Ethereum smart contracts.
11. [**Solhint**](https://tokenhouse.github.io/solhint/rules.html): A linter for Solidity code that helps identify and fix issues in smart contracts.

## Wallets

12. [→ Check out the wallets section ](/blockchain/learn-iotex/wallets.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iotex.io/blockchain/build/web3-development/set-up-your-environment.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
