Пользовательский Discourse с ограниченным функционалом

Привет, команда!

Я работаю над небольшим проектом, где мы кастомизируем Discourse, чтобы пользователь сразу попадал на «тему» с множеством клиентских доработок. Пользователь сразу оказывается в теме и может просто публиковать сообщения или отвечать в ветке. Discourse загружается в веб-вью в мобильном приложении. Я также удалил оригинальный редактор сообщений и создал свой собственный с некоторыми удалёнными опциями. Кастомный редактор всегда прикреплён к низу страницы, чтобы обеспечить быстрый ответ на посты пользователей.

Мы используем минимальные спецификации (2 ГБ ОЗУ без Docker). Когда пользователь регистрируется на форуме, мы перенаправляем его (на стороне клиента) на тему, и иногда это перенаправление занимает от 10 до 25 секунд. Я проверил другие сайты, например swift.org — их версия Discourse загружает страницы достаточно быстро: от 3 до 6 секунд. Я проанализировал вкладку сети: загружаются те же JS и CSS, единственное отличие — на мобильном устройстве загружается версия «mobile.css».

В чём может быть проблема с нашей кастомной версией Discourse? Есть ли какие-то направления для оптимизации? Стоит ли увеличить спецификации сервера? Наша клиентская база пока небольшая — всего несколько сотен пользователей, сейчас на платформе работают лишь пара разработчиков, и мы уже сталкиваемся с этой проблемой.

Вы не выполняли официальную стандартную установку Discourse, а выбрали установку для разработки? Описанное вами поведение соответствует ожидаемой производительности при установке для разработки.

Вы внесли изменения в плагин или сделали форк?

Да, я сделал форк. Я не использовал Docker, немного настроил серверную часть, а в основном вносил изменения на стороне клиента, например, в JS и CSS. Официальная документация по установке не давала чётких инструкций по настройке собственного кода. Не могли бы вы подсказать, где найти настройку Docker с собственным кодом? По сути, я просто хочу загрузить код из своего репозитория. [Я новичок в Docker].

Ваш пользовательский код всегда должен собираться в виде плагина, а не как форк ядра.

Я согласен, у вас нет установки для продакшена. Настройте правильную среду разработки, создайте свой плагин и установите его на корректную среду для продакшена.

Смотрите Руководство разработчика по темам Discourse и Руководство для начинающих по созданию плагинов Discourse, часть 1: Создание базового плагина.

Под «кастомным кодом» я имею в виду, что ядро Discourse не затрагивается. Это лишь небольшие правки CSS и изменения в JS для удовлетворения наших требований. Мы просто хотели перенаправлять пользователей (на основе определённых настроек) сразу на экран обсуждения темы (как здесь).

Плагины предназначены для добавления новых функций, верно?

По крайней мере, в какой-то степени верно, что если вы изменяете только JS и CSS, то, вероятно, сможете внести все необходимые правки с помощью компонентов темы. Если же вам нужно изменить что-то на бэкенде в Rails, вам понадобится плагин.

Рекомендую начать с ссылки на разработчика темы выше и попробовать внести свои изменения с помощью компонентов темы.