# Folder structure

### The \`\_petal\_framework\` folder

![Petal Pro files that devs can ignore](/files/Y5ilYob33ejGzZ71JM2p)

Anything related to Petal Pro that developers shouldn't need to modify are put in a separate folder called `_petal_framework`  (we didn't name it `_petal_pro` because our project renaming script would overwrite the module names).

There is also another folder like this for our generator templates:

![Petal Pro template files (eg. mix petal.gen.live)](/files/USFh3KftVBP4q3KSkUvg)

For upgrading purposes, we recommend never modifying files in these folders directly.&#x20;

### How do I modify Petal Pro components?

Simply duplicate them into your own namespace. For example, you might want to modify our email components to jazz them up a bit:

![](/files/8LobOH2Pf0Io76YNk6DV)

You will then need to rename the module, eg. from `PetalFramework.Components.EmailComponents` to `YourApp.Components.EmailComponents`.&#x20;

Then do a global search for where you import or alias that component. eg if I search for `PetalFramework.Components.EmailComponents` I see it here:

```elixir
defmodule PetalProWeb.EmailView do
  use PetalProWeb, :view
  alias PetalFramework.Components.EmailComponents
end
```

I just need to change that alias to my new duplicated component:

```elixir
defmodule PetalProWeb.EmailView do
  use PetalProWeb, :view
  alias YourApp.Components.EmailComponents
end
```

Now you can modify the component to however you want.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.petal.build/petal-pro-documentation/v1.2.0/fundamentals/folder-structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
