# Getting Started

{% embed url="<https://drive.google.com/file/d/1DbyRUUe3O6U-W03PYl5uNrf8Tw82wQ2_/view?usp=sharing>" %}
Step-by-step Randcast Tutorial
{% endembed %}

## To integrate Randcast into your DApp:

1. Create a Subscription
2. Fund the Subscription
3. Build and Deploy the Consumer Contract
4. Add Consumer to your Subscription
5. Request Randomness from the Consumer
6. Process the Randomness Result in your Consumer Contract

***Note**:*&#x20;

* *Randcast requests are paid via Subscription; you should fund your Subscription in advance to avoid service interruptions.*
* *A Consumer Contract is part of your DApp and is used to request and "consume" the randomness from Randcast; any subsequent logic on how to utilize the randomness result can be defined in the callback function within your Consumer Contract.*
* [*Randcast SDK*](https://docs.arpanetwork.io/randcast/using-the-sdk) *provides* [*a base implementation of the Consumer Contract*](https://docs.arpanetwork.io/randcast/using-the-sdk/generalrandcastconsumerbase)*, which you can extend to implement your custom logic, like in* [*this simple example*](https://docs.arpanetwork.io/randcast/using-the-sdk/consumer-contract-examples/example-get-random-number)*.*

***

In this tutorial, we will demonstrate three ways to integrate Randcast into your DApp.

### 1. [Use Web GUI ](https://docs.arpanetwork.io/randcast/getting-started/use-web-gui)

Pros:&#x20;

* Zero local development environment setup
* Minimum command-line experience required
* Intuitive to less experienced developers

Cons:

* Less flexible
* Hard to debug for complex DApps
* Less verbose output

***

### 2. [Use Randcast CLI](https://docs.arpanetwork.io/randcast/getting-started/use-randcast-cli)

Pros:

* More verbose output
* More flexible
* Easy to debug

Cons:

* Requires local development environment setup using Docker
* Requires command-line experience
* Requires basic Solidity development experience

***

### 3. [Use Solidity Development Tools](https://docs.arpanetwork.io/randcast/getting-started/use-solidity-development-tools) (e.g. [Foundry](https://book.getfoundry.sh/))

Pros:

* Most verbose output
* Most flexible
* Full programmatic access, easy to automate

Cons:

* Requires local development environment setup
* Requires advanced Solidity development experience
* Requires experience in [Foundry](https://book.getfoundry.sh/)
