Skip to content

Project Layout#

When you followed the quickstart and initialized a new EDA project with the banners application in it, your top level project directory should look like this:

.
├── banners # dir
├── common  # dir
├── test    # dir
├── utils   # dir
├── PROJECT
├── go.work
├── go.work.sum
├── pyproject.toml
├── ruff.toml
├── .env
├── .envrc
└── .gitignore

Let's cover the purpose of each directory in more detail.

Application#

The banners directory contains the banners application files that edabuilder created for us when we executed edabuilder create app banners. We cover the contents of this directory in the App Components section.

Common#

The common directory contains the common python functions and constants that apps can use. It is auto-generated by edabuilder and typically should not be modified manually.

Test#

The test directory contains python packages that enable application unit testing. The app testing documentation is a work in progress.

Utils#

In the utils directory you will find utility functions that abstract some EDA API interactions via convenience functions.

Project#

The PROJECT file contains the metadata a project was initialized with. For example, if you are reading this after the quickstart, your project file should look like this:

builderVersion: v25.4.1
domain: eda.local
name: example
vendor: community

The builderVersion contains the EDA release version that is used by this particular version of the edabuilder tool.

The rest of the fields are self explanatory and were passed as CLI arguments during the project instantiation.

Go workspace#

The go.work file defines the Go Workspace configuration and includes (via uses statement) all apps created in the project. Since the project may contain more than one app, the workspace makes it possible to develop multiple apps in parallel without modifying each apps's Go module file.

Most users will never need to modify the workspace file, and edabuilder will add new apps to the workspace automatically.

Python project#

You will find the pyproject.toml and ruff.toml files in the root of your project. The pyproject.toml file contains the Python project metadata and the ruff.toml file contains the Python linting rules.

Since most EDA applications are written in Python12 as an application developer you would want to initialize a virtual environment for your EDA app project to ensure that you get code autocompletion and basic linting in place.

You may use any virtual environment tool of your choice, and in the quickstart we used uv to init the virtual environment by running uv sync while being in the project directory.

Environment#

A couple of environment files - .envrc and .env - contain environment variables that should help your editor to resolve the local python packages and select the local .venv as an acting python environment.

Git ignore#

And finally, you will find a .gitignore file that contains a list of files and directories that should be ignored by Git.


  1. Technically, with MicroPython runtime. 

  2. There are two different classes of EDA apps - intent apps that are written in Python, and Controller-based apps, that can be written in any language.