Рад, что есть взаимопонимание и общее видение ситуации. Но немного еще добавлю информации, к слову.
Так вот, к слову о некоторых моих наработках, которые кому-то все же пришлись по душе, хоть и не всем. Там, где они были использованы, они продолжают работать, даже если были встроены несколько лет назад. Особый пример: https://www.radimax.ru/ Это второй сайт, где я использовал Smarty (первый был моим личным проектом и давно уже канул в лету). На нем же развивался modxSite со своего первоначального вида. И хотя сайт пережил несколько глобальных апгрейдов, заложенная в него основа все еще работает.

modxclub.ru последние часы отживает на тех еще технологиях. И хотя он уже наполовину JS-овый, основное ядро все еще на modxSite, хоть уже и без Smarty.

А недавно вот помогал с обновлением shopModx https://modxclub.ru/topics/shopmodx-oshibki-v-rabote-magazina-pri-obnovlenii-s-versii-2.2.10-na-2.6.5-2806.html
Обновился MODX с версии 2.2.10, а это, на минуточку, релиз от 07.10.2013 :) https://modx.com/download/other-versions?releaseKey=revolution-2.2.10-pl
На обновление я потратил меньше часа, просто обновил пакеты, пару контроллеров подправил и все. И магазин дальше поехал работать (к слову, поломались только некоторые функции в админке из-за глобальных изменений ее на уровне MODX, а во фронте работало все, кроме одного Ajax-запроса).

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

Вот немного скринов:

Когда накачу обновления, сможете это погонять самостоятельно.

Так к чему я это? Надежные проверенные технологии это конечно хорошо. Но в наше время немаловажна скорость разработки и совместимость с чужими технологиями. За два дня я столько вещей с нуля написал, столько всяких вариантов испробовал, что на MODX я это делал бы не один месяц. Я серьезно. Чего только стоит работа с базой данных. Попробуйте в MODX поставить несколько компонентов, которые под себя создают таблицы с одинаковыми названиями, и быть уверенными, что все правильно поставилось, и нет нигде логических ошибок в базе данных.

У меня мало того, что схема легко редактируется и при деплое происходит автоматическое изменение структуры базы данных, так еще и тесты можно писать на проверку необходимых полей. К примеру, вот так выглядит результат успешного выполнения теста:
✓ modxclub Verify prisma SchemaCheck type "Route"Check type "User"Check type "Resource"Check type "Tag"Check type "ResourceTag"Check type "Vote"Check type "Import"Check type "Log" modxclub Verify API SchemaCheck type "Route"Check type "User"Check type "Resource"Check type "Tag"Check type "ResourceTag"Check type "Vote"Check type "Import"Check type "Log"


А вот так с ошибками:
Verify prisma SchemaCheck type "Query"Check type "TestUser" Verify API SchemaCheck type "Query"Check type "TestUser" modxclub Verify prisma SchemaCheck type "Import"Check type "Log"Check type "User" 1) Check type "Resource" modxclub Verify API SchemaCheck type "Import"Check type "Log"Check type "User" 2) Check type "Resource" 10 passing (11ms) 2 failing 1) modxclub Verify prisma Schema Check type "Resource": Error: the string "Can not find field Resource:template" was thrown, throw an Error :) 2) modxclub Verify API Schema Check type "Resource": Error: the string "Can not find field Resource:published" was thrown, throw an Error :)

Так что, я думаю, в будущее надо смотреть обязательно.

UPD: вот гляньте, подключил 4 модуля к проекту и выполнил деплой схемы в БД:

Подключение модулей выглядит вот так:

import UserModule from "@prisma-cms/user-module"; import ResourceModule from "@prisma-cms/resource-module"; import SocietyModule from "@prisma-cms/society-module"; // ... this.mergeModules([ SocietyModule, UserModule, ResourceModule, ]);
После этого в консоли выполняем PORT=4001 endpoint=$endpoint yarn deploy
и все, получаем результат. В данном случае было создано несколько таблиц и связей между ними. При чем если подобные схемы уже были, они просто дополнили друг друга и все.

UPD2: А еще радует очень то, что при попытке деплоя, если удаляются какие-то колонки или таблицы и есть данные, которые при этом будут утеряны, деплой завершается с ошибкой, то есть вероятность потери данных при этом исключается.