Система магазинов - описание ниже не актуально, проект перестраивается
Общая информация
- Для облегчения создания надежного кода используются несколько инструментов: phpstan (6 уровень), deptrac, codesniffer.
- Приложение хорошо протестировано: тесты разделены на категории приложений (E2E), интеграции и модульных тестов.
- Реализована система кэширования на базе Redis.
Технические решения
- Каталоги организованы в /Module, который содержит подкаталоги для всех модулей, и /Shared, который включает в себя компоненты, общие для всех модулей. Каждый модуль [Заказ, Товар, Пользователь] состоит из четырех каталогов:
- Приложение -> содержит реализацию логики приложения.
- Домен -> содержит вещи, относящиеся исключительно к бизнес-информации — сущности, перечисления и интерфейсы репозиториев.
- Инфраструктура -> включает компоненты, относящиеся к техническому уровню, такие как база данных и система кэширования.
- Пользовательский интерфейс -> содержит консольные команды или контроллеры, которые служат связью между пользователем и системой.
- Действия подразделяются на команды и запросы. Я реализовал собственное решение для хранения информации после завершения действий. Каждая команда возвращает CommandResult, а запросы возвращают QueryResult, который содержит информацию об успехе, кодах состояния и полученных данных.
- Аутентификация реализуется с использованием подхода JWT с помощью LexikJWTAuthenticationBundle.
- Источник событий используется для хранения информации о текущем статусе заказа. Статус последнего созданного заказа указывает на его текущий статус.
База данных
Документация по API
Структура
Модуль
Команды с использованием Make
Инициализировать для первого запуска
Запустить профиль разработки
Удаление миграций, миграция и загрузка фикстур
make drop_migrations
make migrate
make load_fixtures
Запустить все тесты
Команды без Make
Инициализировать для первого запуска
docker-compose up --profile dev -d
docker-compose exec php bin/console doctrine:migrations:diff
docker-compose exec php bin/console doctrine:migrations:migrate
docker-compose exec php bin/console lexik:jwt:generate-keypair
Для других команд проверьте содержимое Makefile.
API-документация
Документация по API доступна по адресу