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:
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.