# Directory Layout

A typical interact project is composed of the following paths:

| Name                                      | Default Value             | Description                                                                                               |
| ----------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------- |
| [@ alias](at-alias)                       | *src*                     | A directory that is mapped to the [@ alias](at-alias)                                                     |
| *config*                                  | *config*                  | a directory that contains extra configuration such as the [markdown config](remark-rehype-unified#config) |
| *cache*                                   | *.interact*               | A directory that contains temporary runtime information                                                   |
| [build](build)                            | *dist*                    | A directory where the [build result](build) is stored (static website and handler)                        |
| [config file](conf)                       | *interact.config.json*    | the [configuration file](conf)                                                                            |
| *images*                                  | *src/images*              | a directory that contains [raster image](../components/image) or [Svg](../components/svg)                 |
| [markdown components](markdown-component) | *src/components/markdown* | a directory that contains your custom markdown component                                                  |
| [layouts](layout)                         | *src/components/layouts*  | a directory that contains your custom [layouts](layout)                                                   |
| [middlewares](middleware)                 | *src/middlewares*         | a directory that contains the middlewares for auto-registration                                           |
| [public](public)                          | *public*                  | A directory that contains non-processed resources such as *pdf* that your pages may reference.            |
| [pages](page)                             | *src/pages*               | A directory that contains [pages](page)                                                                   |
| *root*                                    | config file directory     | The base directory of your project                                                                        |

If the path values are relative (ie without starting slash), they are all relative to the *root* directory which is the directory of your project.

## Configuration

The config file path is defined in order of precedence as being the value of:

* the *confPath* [cli flag](cli)
* the *INTERACT\_CONF\_PATH* environment variable if defined
* the current directory with *interact.config.json* as default

You may configure the other paths in the *paths* node of the [configuration file](conf)

## How to check the actual values?

With the [cli](cli)

```bash
interact config --filter="paths"
```
