Skip to content
 
 

Repository files navigation

Доброго времени суток.

Этот репозиторий содержит в себе приближенную структуру к боевым проектам и является основой для выполнения тестового задания.

Требования

  • Git
  • Docker
  • Docker Compose
  • Make (для использования Makefile)

По установке докера достаточно много документаций, в том числе через WSL2 на Windows. Сама конфигурация docker-compose включена в проект, поэтому достаточно просто установить по инструкции.

Шаги по запуску

1. Клонирование репозитория

Выполните команду для клонирования проекта:

git clone https://github.com/rozaljkeee/test-task.git

2. Сборка и запуск контейнеров

Инициализация проекта с нуля:

make init

Если по какой-то причине не получается через make, то все команды можно посмотреть в Makefile и последовательно запускать вручную

Нюансы работы с проектом

1. Изменения css/js файлов

Изменения отслеживаются после запуска команды

make assets-watch

Эта команда запускает отдельный контейнер, отслеживающий изменения и обновляющий данные. Если этот контейнер не запущен, то изменений не будет видно.

2. Добавление/изменение таблиц в базе

Изменения базы происходит через миграции. После создания новой сущностей или изменения существующих запускается команда:

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages