> For the complete documentation index, see [llms.txt](https://docs.ethernity.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ethernity.cloud/developer-guide/the-guide/environment-prerequisites.md).

# Environment Prerequisites

**1. IDE**

For a streamlined development process, we recommend using Visual Studio Code—a powerful and versatile code editor that offers a seamless experience for developers. You can download Visual Studio Code from the official [website](https://code.visualstudio.com/).

After running the IDE, a new workspace will be created, where you can start developing the framework and code.

**2. Language runtime — Python or Node.js**

Your backend runs inside the enclave in the language of your template: **Python 3.10+** (Pynithy) or **Node.js 16+** (Nodenithy). Install the one you will write in:

* Python: <https://www.python.org/downloads/>
* Node.js: <https://nodejs.org/en/download>

(React is only needed later, if you put a web frontend on your dApp — see [Step-by-Step dApp](https://docs.ethernity.cloud/developer-guide/the-guide/step-by-step-dapp).)

**3. Docker**

`ecld-build` bakes your backend into attestable enclave images using Docker. Install Docker Desktop and make sure `docker` runs: <https://www.docker.com/products/docker-desktop/>

**4. The SDK**

```sh
pip install ethernity-cloud-sdk-py      # Python
npm install @ethernity-cloud/sdk-js     # JavaScript
```

Verify the install with `ecld-init --help`.

**5. Testnet tokens**

Publishing and running on the testnet costs testnet tokens — claim them free at the [Testnet Faucet](https://docs.ethernity.cloud/testnet/testnet-faucet) once your wallet (next step) is set up.

**6. Wallet Setup**

A wallet is a crucial tool within the Ethernity Cloud ecosystem, empowering users to securely store and transfer their data for processing. As a developer, having a Web3 dApp testing wallet is necessary.

The wallet setup process with Metamask is detailed here: [Getting started with MetaMask](https://support.metamask.io/hc/en-us/articles/360015489531-Getting-started-with-MetaMask).

Currently, there are two networks for using Ethernity Cloud. Please set up your wallet for the desired network following one of the articles below:

**TestNet Network on bloxberg**

{% content-ref url="/pages/D1In0HHWu8bTmw9N2zy5" %}
[tETNY on Bloxberg](/ethernity-node/configuring-the-node/select-the-network/testnet-on-bloxberg/tetny-on-bloxberg.md)
{% endcontent-ref %}

**Mainnet Network on bloxberg**

{% content-ref url="/pages/-MZ-JJzm5J\_p6v6tZ0Y6" %}
[ETNY on Bloxberg](/ethernity-node/configuring-the-node/select-the-network/mainnet-on-bloxberg/connect-to-the-bloxberg-blockchain.md)
{% endcontent-ref %}

### The SDK commands

Installing the SDK gives you six commands. You'll use them roughly in this order:

| Command        | What it does                                                       |
| -------------- | ------------------------------------------------------------------ |
| `ecld-init`    | scaffold a new dApp project                                        |
| `ecld-build`   | bake your backend into the enclave images                          |
| `ecld-publish` | register the enclaves on-chain                                     |
| `ecld-test`    | run a payload locally, with no gas — see **Running your dApp**     |
| `ecld-run`     | run a payload on the network — see **Running your dApp**           |
| `ecld-info`    | inspect your enclaves and ESR state — see **Inspecting your dApp** |

In the JavaScript SDK, prefix each with `npx` (e.g. `npx ecld-test`). Verify your install with `ecld-init --help`.

Next: [Step-by-Step dApp](https://docs.ethernity.cloud/developer-guide/the-guide/step-by-step-dapp) walks you through building your first dApp. [Running your dApp](https://docs.ethernity.cloud/developer-guide/the-guide/running-your-dapp) covers `ecld-test` and `ecld-run`; [Inspecting your dApp](https://docs.ethernity.cloud/developer-guide/the-guide/inspecting-your-dapp) covers `ecld-info`.
