# on MANTRA

In this tutorial, you'll learn how to initialize a Mantra-based Substreams project using the Substreams CLI (`substreams init` command).

{% hint style="info" %}
The CLI installation is supported only on Linux and macOS. If you're using Windows, consider using the [DevContainer environment](https://docs.substreams.dev/reference-material/development-tools/devcontainer-ref), which launches a Linux-based virtual environment.
{% endhint %}

## Step 1: Initialize Your MANTRA Substreams Project

1. [Install the Substreams CLI](https://docs.substreams.dev/how-to-guides/installing-the-cli).
2. Running `substreams init` will give you the option to choose between two MANTRA project options. Select the one that best fits your requirements:
   * **MANTRA-hello-world**: Creates a simple Substreams module that outputs all `transfer` events. It demonstrates how to access the full Mantra block, iterate over events, and filter by a specific event `type`.
   * **MANTRA-events**: Creates a Substreams that extracts MANTRA events using the cached [MANTRA Foundational Module](https://substreams.dev/packages/mantra-common/v0.1.0), filtered by one or more smart contract addresses. This includes type `wasm` events.

{% hint style="info" %}
Tip: Have the start block of your transaction or specific events ready.
{% endhint %}

## Step 2: Visualize the Data

1. Run `substreams auth` to create your [account](https://thegraph.market/) and generate an authentication token (JWT), then pass this token back as input.
2. Run `substreams build` to compile the project.
3. Run `substreams gui` to visualize and iterate on your extracted data.

## Step 2.5: (Optionally) Transform the Data

1. Open the `src/lib.rs` file that has been generated.
2. Modify the transformations made to the data as needed. Every time you modify the code, you will have to recompile the project with `substreams build`.

## Step 3: Load the Data

To make your Substreams queryable (as opposed to [direct streaming](https://docs.substreams.dev/how-to-guides/sinks/stream)), you can automatically send the data to a SQL data by using the [SQL sink](https://docs.substreams.dev/how-to-guides/sinks/sql) or through [PubSub](https://docs.substreams.dev/how-to-guides/sinks/pubsub).

## Additional Resources

You may find these additional resources helpful for developing your first MANTRA application.

### Dev Container Reference

The [Dev Container Reference](https://docs.substreams.dev/reference-material/development-tools/devcontainer-ref) helps you navigate the container and its common errors.

### CLI Reference

The [CLI reference](https://docs.substreams.dev/reference-material/command-line-interface) lets you explore all the tools available in the Substreams CLI.

### Substreams Components Reference

The [Components Reference](https://github.com/streamingfast/substreams/blob/develop/docs/references/substreams-components/README.md) dives deeper into navigating the `substreams.yaml`.
