..  include:: /Includes.rst.txt

..  _directory_structure:

===================
Directory structure
===================

The directory structure of the project is as follows:

..  code-block:: plaintext

    .
    ├── .ddev
    ├── .github
    │   ├── workflows
    │   │   ├── main.yml
    │   │   ├── phar.yml
    │   │   ├── docker.yml
    ├── bin
    ├── Documentation
    ├── packages
    │   ├── typo3-docs-theme
    │   ├── typo3-guides-extension
    │   ├── typo3-guides-cli
    ├── tests
    │   ├── Integration
    ├── tools


The :file:`.ddev/` directory contains the configuration for the local development
environment for people using `DDEV`_.

The :file:`.github/` directory contains the configuration for the GitHub workflows.
They are triggered by pull requests and pushes to the main branch. The main workflow
contains the quality assurance steps. The phar workflow builds the phar file on
release and nightly builds. Same applies for the Docker workflow on the docker side.

The :file:`bin/` directory contains the executable scripts for the project. The
file in there is needed for the phar build.

The :file:`packages/` directory contains the TYPO3-specific extensions. The
``typo3-docs-theme`` extension contains the theme for the documentation, and
TYPO3-specific directives. The ``typo3-guides-extension`` extension contains
extensions on the base tool. This are customizations to make the tool fit the
TYPO3 documentation needs. The ``typo3-guides-cli`` package is a collection
of Symfony Commands for tasks like conversion or linting.

The :file:`tests/` directory contains the tests for the project. The integration
tests are located in the :file:`Integration/` directory. During the integration
tests the tool is executed as it was run by the user.

The :file:`tools/` directory contains the tools needed for the project. Like
scripts to build the phar file or adapt GIT hooks.

The :file:`Documentation/` directory holds the documentation you are now
reading. It is the default documentation being build by the project, too.

The :file:`Dockerfile` and :file:`entrypoint.sh` files provide the Docker
container support for the project.

The :file:`Makefile` contains a list of all supported development commands and
tasks that can be executed. All of them can also be executed with a composer
wrapper script (:bash:`composer make ...`).

..  _DDEV: https://ddev.com/