eMarket GNU GPL 3.0 (движок интернет-магазина) ч.2

После первой публикации мы получили порцию критики. И это не удивительно, так как первый альфа-релиз состоялся только 1 января 2021. Мы прислушались к конструктивно критикующим коллегам. Было принято решение доработать ряд моментов. А именно:

Блок-схема
eMarket

1. В частности очень многих смущали обработчики в контроллере, которые были вне классов. Это справедливая критика, так как многие отвыкли видеть код в контроллере вне объектов.

Для того чтобы устранить эти моменты был проведен крупный рефакторинг кода. В настоящий момент весь код бизнес-логики, как впрочем и весь остальной, находятся в классах в разделе model/eMarket. Сторонние классы находятся в папке model/vendor и они остались не тронуты. Не осталось мест с кодом-лапшой.

2. Ряд вопросов был и к не привычной структуре движка. Чтобы наша архитектура была более понятна, прилагаю блок-схему структуры движка.

3. Почему бутстрап 3? Если посмотреть на дату начала проекта (март 2018), то станет понятно что на тот момент стабильная версия была только третья. На четвертую не было смысла переходить, так как мы понимали что позже (к моменту нашего первого релиза) выйдет пятая версия, и лучше не малую работу провести уже на пятой версии. Кроме того пятая версия (пока еще бета) написана на ванильном JS. А это позволит выбирать JS фреймворк, а не быть привязанным к jQuery. Это задел на будущее.

Мы начали подготовку по переводу всего своего JS кода на ванильный, но эта работа не быстрая, так как многие плагины завязаны на jQuery. Когда появится возможность отвязаться от этих плагинов, то это будет сделано. Вероятно уже после перехода на 5 версию бутстрапа.

Другими словами мы готовимся к переходу на бутстрап 5, но для начала он должен выйти в стабильной версии. Мы надеемся что переход на ванильный JS даст возможность полностью отвязаться от jQuery и предоставит свободу выбора фреймворка или библиотеки: ReactJS, Vue и т.п.

Минимальные требования:

PHP >= 7.3 (включая 8.0)
MySQL >= 5.7
Javascript >= ES6
HTML 5

Мы используем режим error_reporting(-1), и многие могут убедиться в чистоте лога. Верстка ведется профессиональным верстальщиком, и мы надеемся что наша работа будет интересна людям.

Я постараюсь ответить на все конструктивные вопросы.

Проект на GitHub - https://github.com/musicman3/eMarket

Техподдержка и демо - http://emarketforum.com

0
23 комментария
Написать комментарий...
Евгений

Здравствуйте. Статья чисто техническая, но, на мой взгляд, Трибуна - это не про технические приемы. Более конкретно о чем хотелось бы читать описано здесь https://vc.ru/tribuna/details/rules. Тем не менее, молодцы, что поработали над отзывами

Ответить
Развернуть ветку
Александр
Автор

Спасибо. Я еще не очень освоился на этом ресурсе, и трибуна показалась наиболее подходящей. А какой раздел Вы бы посоветовали?

Ответить
Развернуть ветку
Евгений

Если я не ошибаюсь, здесь вообще нет такого раздела, чтоб только про программирование говорить. На мой взгляд, скорее это было бы интереснее людям на Хабре

Ответить
Развернуть ветку
Александр
Автор

На хабру не попасть без инвайта. Много статей разных за все годы отправлял, но отклоняют все. Там своя каста.

Ответить
Развернуть ветку
Roberto Martinez

Там просто статьи с говнокодом не пропускают

Ответить
Развернуть ветку
Дмитрий Соколов

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

Ответить
Развернуть ветку
Roberto Martinez

наверное

Ответить
Развернуть ветку
Андрен Норов

Мне было бы стыдно показывать свой говнокод публично, ещё и на Хабре

Ответить
Развернуть ветку
Андрен Норов

ахах, красавчик!

Ответить
Развернуть ветку
Евгений

Ошибся, есть оказывается https://vc.ru/dev

Ответить
Развернуть ветку
Александр
Автор

Спасибо. Я думаю нужно переопубликовать туда. P.S. там аудитория небольшая, так что думаю туда нужно специализированную статью подготовить

Ответить
Развернуть ветку
Asf

Выглядит очень неплохо !!!
Вопрос один, относительно фреймворка  js?
Сейчас 2012 или 2021?)))
Многие, очень многие переходят на гугловский, он значительно быстрее  да библиотек меньше,  НО если именно web то их - достаточно + есть интеграция с тем же C++ . 

Ответить
Развернуть ветку
Александр
Автор

Спасибо. Так как мы начинали проект в 2018, то на тот момент был Bootstrap 3, а он завязан на jQuery. В настоящий момент мы готовим js на ваниль с таким расчетом, чтобы перейти на 5 бутстрап (который тоже на ваниле). При этом после того, как решим все замены плагинов на ваниль, то получим систему, свободную от js-фреймворка, и уже можно будет выбирать на свой вкус любой фрейм или библиотеку: ReactJS, Vue, Angullar  и т.п. тем, кто захочет ее подключать для своих нужд. Пока еще не вышла стабильная версия 5 бутстрапа, мы меняем свои библиотеки js, обработчики модальных окон и т.п. на ваниль. Это займет время, но зато даст возможности в разработке js-части в будущем. В принципе это описано чуть выше, но суть думаю ясна. В идеале мы оставим ваниль, а если и будем использовать современные решения, то уже не jQuery. Вероятно это будет ReactJS или что-то другое. Слишком дорого обходится завязка на фреймворк в плане долговременной поддержки и задела на будущее и нужны долгоиграющие и современные фреймы, при том чтобы они уже не глобально использовались в проекте, а локально для определенных нужд, с целью более простой их замены в случае необходимости. Проблема jQuery изначально в бутстрапе на момент начала разработки. Поэтому тогда и не использовались нынешние решения, которые более актуальны. Поэтому использовали то, что было в jQuery. Никто не думал что 5 бутстрап наконец-то эволюционирует в ваниль. А это большой шаг вперед по сравнению с конкурентными решениями. И мы намерены перейти на ваниль в ближайшее время. Я думаю к моменту выхода готового рабочего релиза 1.0 мы уже перейдем на 5 бутстрап и ваниль.

Ответить
Развернуть ветку
Asf
Вероятно это будет ReactJS или что-то другое.

Посмотрите в сторону Flutter фрейм очень удобный, и очень перспективный....
К тому же, даже без планирование можно подключаться к базе..... правда, если Вы составляет сложные объекты с множеством вложенных объектов,  то php немного удобнее,  недели отправка инструкций/транзакций напрямую (без php).
Проект большой, интересный  .. Мало на vc  тут такого, тем более,  присоединюсь к комментатору выше, аудитория , немного не та, что бы показывать ей  стэк, структуру  проекта))

Удачи вам!!)

Ответить
Развернуть ветку
Александр
Автор

Спасибо за поддержку. Если знаете платформы, где было бы актуально разместиться с описанием проекта, то буду рад совету.

Ответить
Развернуть ветку
Asf

Нет полной уверенности, что это Вам подойдёт,  но выборка большая.....
В РФ , я бы посмотрел контакты ресурса c-news,(РБК-холдинг) раньше можно было им написать статью, вернее написать в редакцию.....
Но, сами понимаете,  того что Вы показали мало, нужно сравнение с конкурентами а главное реальные истории применения/использования...

Ответить
Развернуть ветку
Александр
Автор

Да, у нас еще много работы. Пока что альфа-релиз выпущен только для ознакомления. К моменту релиза там многое добавится для полноценной работы.

Ответить
Развернуть ветку
Asf

На заметку (увидел Ваш пост от 6 января) когда показываете функционал дашборд/ui итп, лучше делайте скрины)
Люди - ленивые создания, в массе своей, и лишние телодвижения, отпугивают=)
В админке,  на удивление , мало языков ))
Переводить то плагин, зачем так ограничивать юзера (дело ваше просто , моё субъективное аью))
И на удивление админка загрузилась в "EN" хотя,  я не через Тор зашёл,  по ip должно быть ru)

Ответить
Развернуть ветку
Александр
Автор

В админке выставляется базовый язык для магазина и язык для админки, который сохраняется на логин админа. Именно он выставляется когда заходит админ внутрь. Видимо кто-то переключал на английский, так как народ заходит из разных стран. Дашбоард у нас пока чистый, и к моменту релиза он заполнится нужной инфой в виде графиков, таблиц и т.п. что там нужно.

Ответить
Развернуть ветку
Asf

Ещё,  подумайте над конвериацией валют, к примеру,  у Вас клиент продаёт панды,  дикоросы и и.п. для зонтиком и приверженцев ЭКО продуктов , коих много на Западе => только перевода ui контента мало.....не поймёт житель условной Португалии,  сколько 2.5т.р ))

Ответить
Развернуть ветку
Александр
Автор

Валюту можно также выставить по умолчанию. Кроме того у нас реализована система валют, где нет базовой привязки при изменении самой валюты, и не требуется перевыставлять цены по всему каталогу при смене базовой валюты. Достаточно указывать актуальный курс. Можно просто забивать цены в любой валюте и она будет всегда отображаться в базовой как в админке , так как в каталоге. Это как бы относительная величина, которая позволяет решить проблему смены валюты для забивки товара. Удобно бывает некоторые товары забивать в базовой величине долларами а некоторую рублями, но при этом все выведется в дефолтной валюте как менеджеру, так и покупателю. При указании цены при создании товара есть выбор валюты, и если забить  в другой валюте, то отображаться будет в той, что по дефолту. Обычно при смене базовой валюты во многих современных и старых решениях нужно все цены перебить заново. Мы постарались проработать этот вопрос по своему, для большего удобства.

Ответить
Развернуть ветку
Дмитрий Соколов

Да, интересный проект. Будем надеяться что у вас все получится. Действительно, тут площадка для технарей не очень подходит. А по поводу JS, так я думаю React в самый раз. На него куча документации, и сообщество огромное. Он сейчас в первых рядах и поддерживается на долго.

Ответить
Развернуть ветку
Александр
Автор

Спасибо за поддержку. Мне тоже кажется что React более подходящий вариант. Он все таки больше библиотека, нежели фреймворк.

Ответить
Развернуть ветку
20 комментариев
Раскрывать всегда