Доброго времени суток.
Этот репозиторий содержит в себе приближенную структуру к боевым проектам и является основой для выполнения тестового задания.
- Git
- Docker
- Docker Compose
- Make (для использования Makefile)
По установке докера достаточно много документаций, в том числе через WSL2 на Windows. Сама конфигурация docker-compose включена в проект, поэтому достаточно просто установить по инструкции.
Выполните команду для клонирования проекта:
git clone https://github.com/rozaljkeee/test-task.gitИнициализация проекта с нуля:
make initЕсли по какой-то причине не получается через make, то все команды можно посмотреть в Makefile и последовательно запускать вручную
Изменения отслеживаются после запуска команды
make assets-watchЭта команда запускает отдельный контейнер, отслеживающий изменения и обновляющий данные. Если этот контейнер не запущен, то изменений не будет видно.
Изменения базы происходит через миграции. После создания новой сущностей или изменения существующих запускается команда:
make db-migrate-diffПосле этого в проекте создается файл, включающий себя необходимые SQL команды. Применение миграции происходит после команды:
make db-migrateОткат последней примененной миграции:
make db-migrate-prevВ основе структуры всех боевых проектов лежит DDD-архитектура. Она же частично перенесена в этот проект в виде пустых директорий. Про все это можно прочитать, но на начальном этапе достаточно понимать:
- Presentation Layer вызывает Application Layer для выполнения операций.
- Application Layer использует Domain Layer для выполнения основной бизнес-логики.
- Infrastructure Layer поддерживает все слои, предоставляя доступ к базе данных и внешним сервисам.

- Domain Layer: У тебя есть сущности Покупатель, Товар и Заказ.
- Application Layer: Ты создаёшь OrderService, который обрабатывает создание заказа.
- Infrastructure Layer: Реализуешь репозиторий для работы с базой данных, чтобы сохранять заказы.
- Presentation Layer: Создаёшь веб-интерфейс, через который пользователь может оформить заказ.
В проекте присутствует созданная для примера сущность User, репозиторий для получения данных и первая миграция.
Остальное - в твоих руках, экспериментируй. Структурные ошибки судить строго не будем.
В боевых проектах у нас присутствуют линтеры для подсветки ошибок в стиле кодирования. Здесь они отсутствуют, дабы не усложнять настройку проекта. Для информации - мы соблюдаем PSR12.
И, пожалуйста, не забывай про SOLID.