For the management of the project, two GitHub Actions workflows\cite[p. 8]{actions2021} are set up, \texttt{qa} and \texttt{build}.
Every workflow runs on a container specified in the respective YAML file and defines one or more jobs that each
consist out of steps that are either predefined (e.g. \texttt{actions/checkout@v4}\footnote{actions/checkout: \url{https://github.com/actions/checkout}} for checking out the repository) or
just terminal commands (e.g. \texttt{pip install .} to install requirements).

The workflow \texttt{qa} is defined in \texttt{.github/workflows/qa.yml}.
It is executed on every push event and starts two different jobs.
The job \texttt{unittests} runs the unit tests stored in the directory \texttt{test} using different supported Python versions.
The unit tests are written manually to assure that certain code units function as intended.
The job \texttt{qodana} on the other hand triggers a run of the external static code analysis platform Qodana\footnote{Qodana: \url{https://www.jetbrains.com/qodana/}}.
Qodana is checking the code for readability, maintainability and security issues.
Additionally, checks for vulnerable libraries and the compatibility of the open source licences of the libraries used are activated.
A badge in the README shows the status of the last workflow execution.

The workflow \texttt{build}, defined at \texttt{.github/workflows/build.yml}, is executed when a tag is pushed.
It consists of a single job that installs all requirements and uses the module \texttt{build} to create a binary wheel.
After successful build, a release is automatically created with the binary wheel and the source code attached.

Another GitHub feature that was tried out for the project was dependabot\cite{dependabot} which was configured in \texttt{/.github/dependabot.yml}.
It checks for vulnerable libraries as well, creates issues for them and if possible provides pull requests with the update.
The configuration includes the packaging ecosystem, the checking interval and ignored packages.