Giter Site home page Giter Site logo

yaleksandr89 / symfony-shop Goto Github PK

View Code? Open in Web Editor NEW
11.0 4.0 10.0 42.92 MB

[Pet project] Интернет-магазин

Home Page: https://s-shop.alexanderyurchenko.ru

License: MIT License

PHP 62.33% Twig 23.56% SCSS 0.37% CSS 5.02% JavaScript 4.92% Vue 3.60% Shell 0.08% Makefile 0.11%
symfony5 symfony vue vuejs php vuejs2 php8 deployer-php symfony-application symfony6

symfony-shop's Introduction

Интернет магазин

Используется:
* PHP 8.2.7
* Composer 2.5.8
* Postgresql: 15.3

Реализация интернет магазина с использованием Symfony 6. Часть функционала сделана на Vue 2.6 (реализация корзины, корзины в шапке и изменение товара в уже созданном заказе). Административная часть сайта - самописная. Из реализованного функционала:

  • Основное:
    • Реализована смена локали.
  • Консоль:
    • php bin/console app:add-user либо symfony console app:add-user (если установлена symfony cli) - консольное создание пользователя.
    • php bin/console app:update-slug-product либо symfony console app:update-slug-product (если установлена symfony cli) - обновление слага (пример: Название продукта "Красный коврик для мыши", после применения команды слаг станет "krasnyj-kovrik-dlya-myshi").
  • Фронт сайта:
    • Регистрация посетителей.
    • Личный кабинет посетителей.
    • Восстановление пароля.
    • Заказ добавленных товаров (при заказе приходит email покупателю и менеджеру).
  • Административная часть сайта:
    • Управление созданным заказом: создание и изменение текущего
    • Управление пользователям: создание и изменение текущего
    • Создание категорий / заказов

Функционал покрыт тестами.

Процесс установки проекта

  1. Клонировать репозиторий: git clone [email protected]:yaleksandr89/symfony-shop.git.
  2. Переименовать: .env-example в .env.
  3. Настроить БД.
  4. Настройте ADMIN_EMAIL / MAILER_DSN иначе не будет работать функционал восстановления пароля, а также процесс регистрации пользователя будет отрабатывать не до конца.
  5. Настройте OAUTH_GOOGLE_ID / OAUTH_GOOGLE_SECRET - иначе не будет работать авторизация через Google.
  6. Настройте OAUTH_YANDEX_CLIENT_ID / OAUTH_YANDEX_CLIENT_SECRET - иначе не будет работать авторизация через Яндекс.
  7. Настройте OAUTH_VK_CLIENT_ID / OAUTH_VK_CLIENT_SECRET - иначе не будет работать авторизация через Вконтакте.
  8. Настройте OAUTH_GITHUB_EN_CLIENT_ID / OAUTH_GOOGLE_SECRET - иначе не будет работать авторизация через Github (локаль локали: en).
  9. Настройте OAUTH_GITHUB_RUS_CLIENT_ID / OAUTH_GITHUB_RUS_CLIENT_SECRET - иначе не будет работать авторизация через Github (локаль локали: ru).
  10. Настройте SITE_BASE_HOST / SITE_BASE_SCHEME - иначе будут формироваться не корректные ссылки при регистрации, восстановлении пароля и ссылки которые находятся в письмах.
  11. Выполните: composer i && npm i && npm run build.
  12. Создайте БД: php bin/console doctrine:database:create либо symfony doctrine:database:create (если установлена symfony cli).
  13. На проекте используется uuid_generate_v4, поэтому перед миграцией, подключитесь к БД и выполните:
    • Подключитесь к выбранной БД (\c ИМЯ СОЗДАННОЙ БД).
    • CREATE EXTENSION "uuid-ossp";.
    • Для проверки можно выполнить SELECT uuid_generate_v4(); - если в ответ сгенерировался uuid можно приступать к миграциям.
  14. Выполните миграции: php bin/console doctrine:migrations:migrate либо symfony doctrine:migrations:migrate (если установлена symfony cli).
  15. Выполните: php bin/console assets:install либо symfony console assets:install (если установлена symfony cli).
  16. После этого сайт уже будет работать (открываться фронтовая часть), но для подключения к админке необходимо создать пользователя. Это можно сделать через созданную команду:
    • php bin/console app:add-user либо symfony console app:add-user (если установлена symfony cli).
    • Укажите email.
    • Укажите пароль (при вводе он отображаться не будет).
    • Укажите роль, для админа можно указать ROLE_SUPER_ADMIN (Доступные роли: ROLE_SUPER_ADMIN,ROLE_ADMIN,ROLE_USER).
  17. Для отправки некоторых писем (восстановление пароля, подтверждение учетной записи) используется Symfony Messenger, поэтому необходимо запустить команду в терминале symfony console messenger:consume async -vv или повесить команду на крон или настроить Supervisor
;/etc/supervisor/conf.d/messenger-worker.conf
[program:messenger-consume]
command=php /path/to/your/app/bin/console messenger:consume async --time-limit=3600
user=ubuntu
numprocs=2
startsecs=0
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
  • command= - после php указать путь до консоли и через пробел, команду, которую надо добавить
  • user= - указать текущего пользователя
  • numprocs= - количество процессов, которые будут созданы

Остальные опции можно оставить без изменений

Перейти на сайт

FAQ по теста реализованным на проекте

На проекте были реализованны различные типы тестирования (разбиты по группам @group {name}):

  1. unit
  2. integration
  3. functional
  4. functional-panther
  5. functional-selenium

Группы тестов 1. - 3. должны запускать без каких либо проблем php ./vendor/bin/phpunit --testdox --group unit,integration,functional. По последним двум группам в процессе тестирования могут возникнуть проблемы из-за отсутствия установленного chromedriver.

chromedriver-not-found.png

Исправить данный баг достаточно легко, для этого нужно:

После этого, перед началом тестирования, предварительно, нужно запустить selenium командой java -jar bin/selenium-server-4.1.0.jar standalone

UPD

symfony-shop's People

Contributors

yaleksandr89 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.