Repository navigation
Releases: yaleksandr89/symfony-shop
Release list
v3.0.3 — снижение потребления Git LFS bandwidth
Patch release с корректировкой CI и документации вокруг Chrome for Testing и Git LFS.
CI
- GitHub Actions больше не скачивает Chrome for Testing через Git LFS;
- workflow загружает зафиксированный Chrome for Testing
150.0.7871.46напрямую из официального Google Chrome for Testing storage; - перед Docker build проверяются SHA-256 и целостность ZIP;
- Docker baseline и Panther продолжают работать с тем же pinned browser version.
Git LFS
Git LFS остаётся поддерживаемым способом получить Chrome for Testing при обычном git clone, но CI больше не расходует Git LFS bandwidth.
GitHub source/release archives больше не рассматриваются как способ доставки Chrome for Testing: LFS object с браузером в них не включается.
Для локальной установки поддерживаются два способа получить browser archive:
git lfs pull;- загрузка pinned Chrome for Testing из официального источника с проверкой SHA-256.
Документация
README, getting-started.md и development.md синхронизированы во всех поддерживаемых языках:
- Русский;
- English;
- Español;
- 中文;
- Français;
- Deutsch.
Удалено устаревшее утверждение, что GitHub release/source ZIP содержит Chrome for Testing, и обновлено описание CI.
Совместимость
Application code, runtime behavior, dependencies, database schema, API, OAuth и Docker configuration относительно v3.0.2 не изменялись.
Основной стек остаётся прежним:
- PHP
8.5; - Symfony
8.1; - API Platform
4.3; - Doctrine ORM 3 / DBAL 4;
- PostgreSQL 18;
- Docker Compose;
- Vue 2 / Webpack Encore.
Проверки
Финальный checkpoint:
master:
743fe3c4a0940c4691eb26f71f9468c59adf555c
CI #34:
completed / success
v3.0.2 — кроссплатформенное отображение README
Patch release с улучшением совместимости документации между Git-площадками.
Исправлено
- обложка README переведена с HTML
<img>на стандартный Markdown image syntax; - изменение синхронизировано во всех языковых версиях README:
- Русский;
- English;
- Español;
- 中文;
- Français;
- Deutsch;
- обложка корректно отображается на GitHub, GitFlic и MosHub.
Совместимость
Application code, runtime, dependencies, database schema, API, OAuth, Docker configuration и CI относительно v3.0.1 не изменялись.
v3.0.1 — исправления документации и метаданных репозитория
Корректирующий patch release после v3.0.0.
Исправлено
- исправлены ссылки в GitHub entrypoints
ContributingиSecurity, включая корректную работу специальных представлений GitHub; - унифицирован порядок badges во всех языковых версиях README:
- Source;
- PHP;
- Symfony;
- PostgreSQL;
- Docker;
- CI;
- License;
- обновлены repository metadata и описание проекта;
- восстановлена конфигурация добровольной поддержки через Boosty и Sponsr.
Совместимость
Application code, runtime, dependencies, database schema, API, OAuth и Docker configuration относительно v3.0.0 не изменялись.
Основной стек остаётся:
- PHP
8.5; - Symfony
8.1; - API Platform
4.3; - Doctrine ORM 3 / DBAL 4;
- PostgreSQL 18;
- Docker Compose;
- Vue 2 / Webpack Encore.
v3.0.0 — Symfony 8.1, PHP 8.5 и обновлённая архитектура проекта
Крупное обновление Symfony Shop: современный backend-стек, Docker-based окружение разработки, переработанная архитектура приложения, усиленные security-контракты, обновлённые OAuth-сценарии, тесты и полностью переписанная документация.
Backend
- PHP
8.5; - Symfony
8.1; - API Platform
4.3; - Doctrine ORM 3 / DBAL 4;
- PHPUnit
13; - обновлены совместимые Composer-зависимости и инструменты разработки;
- удалены устаревшие зависимости и legacy tooling.
Docker и локальная разработка
Docker Compose является основным поддерживаемым окружением проекта.
Основные операции разработки собраны в Makefile:
- запуск и остановка окружения;
- Composer и Symfony Console;
- npm и сборка frontend assets;
- Doctrine migrations и demo data;
- PHPUnit;
- PHPStan;
- PHP-CS-Fixer;
- ESLint;
- coverage.
PHP, Composer, PostgreSQL и Node.js для штатного workflow проекта на хосте не требуются.
Архитектура
Основные прикладные области:
Account;Catalog;Commerce;Money.
Внутренние Symfony bundles:
AdminBundle;OAuthBundle;SeoBundle.
Удалён подтверждённый legacy/residue, централизована маршрутизация собственного кода и упрощены архитектурные границы приложения.
Security
Усилены существующие security-контракты приложения, включая:
- изоляцию Cart и CartProduct;
- защиту checkout;
- транзакционную границу оформления заказа;
- POST + CSRF для destructive admin operations;
- безопасную обработку redirect и Referer;
- reset-password privacy;
- OAuth fail-closed behavior;
- uniqueness внешних OAuth identities;
- защищённые account linking/unlinking.
OAuth
Поддерживаются:
- Google;
- Yandex;
- VKontakte;
- GitHub;
- Facebook;
- LinkedIn.
Разделены сценарии обычного OAuth login/registration, явной привязки внешнего аккаунта и защищённой отвязки.
Совпадение email внешнего провайдера само по себе не приводит к автоматической привязке существующей локальной учётной записи.
Тесты и качество
Финальный backend baseline:
Unit: 289 tests / 1258 assertions
Integration: 81 tests / 776 assertions
Functional: 392 tests / 5875 assertions
Panther: 3 tests / 140 assertions
Total: 765 tests / 8049 assertions
Failures: 0
Errors: 0
Skips: 0
Также используются:
- PHPStan;
- PHP-CS-Fixer;
- ESLint;
- GitHub Actions;
- Xdebug coverage.
Panther и Git LFS
Browser tests работают через Symfony Panther и Chrome for Testing 150.0.7871.46.
Chrome archive хранится через Git LFS.
Для обычного клонирования:
git lfs install
git lfs pullМинорное обновление Symfony v6.4.9, рефаторинг, исправление ошибок
Обновление Symfony
Symfony обновлена, до максимально возможной, на текущий момент версии — 6.4.9. Дальнейшее обновление (до 7 версии) на текущий момент невозможно, всё упирается в 2 пакета:
php-translation/symfony-bundle— вопрос решается разработчиками пакета, есть соответствующий issue.lexik/form-filter-bundle— пакет переведен в архив, необходимо искать альтернативу.
Рефакторинг кода
- где это возможно, заменены аннотации на атрибуты: сущности, маршруты, тесты.
- замена устаревших функций.
- устранение ошибок и предупреждений выдаваемых в результате работы
phpstan(level 4). - обновление драйверов:
chromedriver,geckodriver. - обновление selenium сервера, а также добавление selenium-server-standalone - позволяет запускать сервер без параметра standalone, но имеет более старую версию.
Рефакторинг тестов
dama/doctrine-test-bundle- обновлен до 8 версии (ранее 6)phpunit/phpunit- обновлен до 11 версии (ранее 9)
Внесены изменения в сами тесты. Тесты завершаются без ошибок, остались:
Remaining indirect deprecation notices (272)
Other deprecation notices (823)
Все это связано с api-platform/core - сейчас используется 2 версия. В ближайшее время постараюсь обновить до последней 3 версии.
Минорное обновление Symfony, рефаторинг кода, исправление ошибок, обновление сторонних пакетов, исправление deprecate уведомлений
- Минорное обновление
Symfonyдо 6.3.1 (composer.json - 6.3.*). - Рефаторинг кода с помощью
php-cs-fixer, так и вручную (deprecate классы, изменение@requiredсphpDocна атрибуты). - Исправление ошибок с помощью
phpstanи возникающие после обновленияsymfony/*и сторонних пакетов. - Обновление сторонних пакетов.
- Исправление
deprecateуведомлений, который выводятся в профилировщике. Исправлены все уведомления вApp\...
Обновлен конфиг для deployer, устранены ошибки (phpstan), удален circleci
- Обновлен конфиг для
deployer- теперь используетсяdeployer 7.3.1 - Устранены ошибки
phpstan- при проверки использовался 4 уровень - удален circleci - работа сервиса в России приостановлена
- Оптимизация проекта: обновлен движок хрома, убраны "избыточные" phpDoc аннотации
Проверка при авторизации через соц.сеть, обновление симфони
Добавлена проверка на более ранюю авторизацию через выбранную социальную сеть у других пользователей. Если это было - будет выведенно сообщение об ошибке (Под логином этой социальной сети уже авторизовались на сайте).
Обнавлена Symfony с 6.0.6 по 6.0.8.
Update framework, added functionality 'link/unlink' social network
The framework version has been updated: 5.4 -> 6.0.6 and added functionality 'link/unlink' social networs in the user profile.
Symfony shop
Realised simple simfony shop. Added multiply oauth:
- Yandex
- Vkontakte
- Github
P.S. more details in the README.md