Основные слои приложения

DataLayer
Слой работы с состоянием данных в сторах. Только в нем разрешено инжектировать репозитории. Слой предназначен только для получения и изменения данных в сторах.
Не может в себя внедрять зависимости других слоев
EventsLayer
Слой обработки асинхронных событий отправленных из других модулей.
Может внедрять зависимости из DataLayer и (если осторожно) LogicLayer
LogicLayer
Слой функциональностей, которые могут пригодиться в нескольких местах. Нужен только чтобы не дублировать код. Считайте отдельные методы и функции
Может внедрять зависимости из DataLayer и EventsLayer
ScheduleLayer
Слой задач, запускаемых по расписанию.
Может внедрять зависимости из DataLayer, LogicLayer и EventsLayer
HttpLayer
Слой http контроллеров, принимающих входящие запросы.
Может внедрять зависимости из DataLayer, LogicLayer и EventsLayer
Глобальные модули
Config - загрузка конфигурации из yaml файла и проверка на наличие обязательных полей
Logging - настройка Logger для разных окружений