> ## Documentation Index
> Fetch the complete documentation index at: https://docs.graphext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recipe

> The recipe is the backbone of any Graphext proyect

<Frame>
  <iframe className="w-full aspect-video" src="https://www.youtube.com/embed/tZcRQOGVHQI?si=5F_DgA6fjK6Bgb10" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

The recipe is a number of [steps](/concepts/graphext-concepts/steps), which
are functions that accept some data and output new, transformed
or enriched data.

Writing a recipe is one way to instruct Graphext on how to build a
project/visualization given some tabular data (others being the use of
the [Wizard](/concepts/graphext-concepts/wizard), or the application of pre-defined recipes).

A recipe can have an arbitrary number of such steps.

When you open the **Recipe Editor**, you will have done so having selected
first a dataset that serves as the main input for the recipe. This dataset
is made available by default with the name `ds`, and so the simplest possible
recipe looks like

```erlang theme={null}
create_project(ds)
```

i.e. a recipe with a single step called `create_project` which accepts a dataset
as input and has no output. This is a special case. Since the result of this step
is the **creation of a project**, it doesn't generate any output that can be further
processed inside the recipe.

However, in practice you'll almost always want to somehow transform or enrich your dataset
and so you'll want to add one or more of the many steps available
in Graphext before the final step of project creation. A complete reference
for all the steps available and how to use them lives under the [API Docs](/api-docs/steps)
