# Environment

Now that our installation is complete, let's configure the development environment for Scaffold ETH-2.

### 1. **Initialize a Local Blockchain**:

In the first terminal, run a local network:

```bash
yarn chain
```

This command starts a local Ethereum network using Hardhat or Foundry, depending on which one you selected in the CLI. The network runs on your local machine and can be used for testing and development. You can customize the network configuration in:

<Tabs groupId="dev-tool">
  <TabItem value="hardhat" label="Hardhat" default>
    ```sh
    packages/hardhat/hardhat.config.ts
    ```
  </TabItem>

  <TabItem value="foundry" label="Foundry">
    ```sh
    packages/foundry/foundry.toml
    ```
  </TabItem>
</Tabs>

### 2. **Deploy Your Smart Contract**:

In the second terminal, deploy the test contract:

```bash
yarn deploy
```

This command deploys a test smart contract to the local network. The contract can be modified to suit your needs and can be found in:

<Tabs groupId="dev-tool">
  <TabItem value="hardhat" label="Hardhat" default>
    ```sh
    packages/hardhat/contracts
    ```
  </TabItem>

  <TabItem value="foundry" label="Foundry">
    ```sh
    packages/foundry/contracts
    ```
  </TabItem>
</Tabs>

The `yarn deploy` command uses a deploy script to deploy the contract to the network. You can customize the deployment script located in:

<Tabs groupId="dev-tool">
  <TabItem value="hardhat" label="Hardhat" default>
    ```sh
    packages/hardhat/deploy
    ```
  </TabItem>

  <TabItem value="foundry" label="Foundry">
    ```sh
    packages/foundry/script
    ```
  </TabItem>
</Tabs>

### 3. **Launch your NextJS Application**:

In the third terminal, start your NextJS app:

```bash
yarn start
```

Visit your app on `http://localhost:3000`. You can interact with your smart contract using the contract component or the example ui in the frontend.

## What's Next:

<Tabs groupId="dev-tool">
  <TabItem value="hardhat" label="Hardhat" default>
    * Edit your smart contract:
      * `YourContract.sol` in `packages/hardhat/contracts`
    * Edit your deployment scripts:
      * `packages/hardhat/deploy`
    * Edit your frontend homepage at `packages/nextjs/app/page.tsx`. For guidance on [routing](https://nextjs.org/docs/app/building-your-application/routing/defining-routes) and configuring [pages/layouts](https://nextjs.org/docs/app/building-your-application/routing/pages-and-layouts) checkout the Next.js documentation.
    * Edit the app config in `packages/nextjs/scaffold.config.ts`
    * Edit your smart contract test in:
      * `packages/hardhat/test` to run test use `yarn hardhat:test`
  </TabItem>

  <TabItem value="foundry" label="Foundry">
    * Edit your smart contract:
      * `YourContract.sol` in `packages/foundry/contracts`
    * Edit your deployment scripts:
      * `packages/foundry/script`
    * Edit your frontend homepage at `packages/nextjs/app/page.tsx`. For guidance on [routing](https://nextjs.org/docs/app/building-your-application/routing/defining-routes) and configuring [pages/layouts](https://nextjs.org/docs/app/building-your-application/routing/pages-and-layouts) checkout the Next.js documentation.
    * Edit the app config in `packages/nextjs/scaffold.config.ts`
    * Edit your smart contract test in:
      * `packages/foundry/test` to run test use `yarn foundry:test`
  </TabItem>
</Tabs>
