[Платно] Разработка платформы сообщества Discourse для версии 2

Привет! Я ищу опытного разработчика Discourse, который поможет подготовить мою платформу сообщества к запуску. Инстанс уже работает, и в нём внедрена кастомная тема (core.scss, nav.scss, nav.js), поэтому это не разработка с нуля — задача в том, чтобы довести все детали до совершенства.

Я предлагаю $250 и готов структурировать оплату по этапам. Вот что мне нужно:

Существующая тема Уже есть полноценная кастомная тема с поддержкой светлой/тёмной темы, кастомным меню навигации, скрывающим стандартный заголовок Discourse, и фирменными цветами. Меню должно корректно отображаться на всех типах страниц, включая профиль участника, и мне нужен специалист, который проведёт аудит и исправит всё, что откатывается к настройкам по умолчанию. Также нужно заменить логотип (файл предоставлен).

Страница портала участника Мне нужна кастомная страница профиля, отображающая тип участника (Владелец, Участник или Дилер), его автомобиль, значок верификации и переключатель языка. Ссылки на ресурсы на этой странице должны быть условными: например, владельцы видят другие инструменты, чем потенциальные участники. Я предоставлю полный интерактивный макет, включающий состояния для светлой и тёмной тем, а также все варианты отображения для разных типов участников.

На странице также должен быть блок «Подключённые аккаунты», где участники могут авторизоваться через Discord и Facebook OAuth. После успешной авторизации их ID платформы и имя пользователя должны записываться в Supabase (учётные данные и схема предоставлены). OAuth-приложения уже настроены — мне нужен только компонент на стороне Discourse и корректная логика обратного вызова.

Язык и перевод Сообщество международное, поэтому это критически важно. Когда участник выбирает предпочитаемый язык (английский, тайский, чешский, голландский, немецкий, новозеландский английский), должен переключаться весь интерфейс Discourse: меню, уведомления, системные сообщения — всё. При первом посещении нужно определять страну участника по IP и предлагать подтвердить выбор. Также необходимо установить и настроить плагин Discourse Translator с использованием ключа API DeepL (предоставлен), активировать кнопки перевода для каждого сообщения и кэшировать переводы по ID сообщения, чтобы снизить затраты на API. Статические страницы, включая портал участника (который также должен быть доступен через нативные кнопки Discourse), должны отображаться на выбранном языке.

Уровни доверия, группы и интеграция с Tally Структура категорий будет готова до начала вашей работы. Мне нужно правильно настроить уровни доверия и группы: типы участников (Владелец, Участник, Дилер) должны назначаться при регистрации, группы должны соответствовать нужным правам доступа к категориям, а любые изменения должны синхронизироваться с Supabase. Также нужно обеспечить передачу discourse_user_id и discourse_username в виде параметров URL для встроенных форм Tally, чтобы они могли быть захвачены как скрытые поля предзаполнения.

Шлюз проверки DVLA Категория только для владельцев должна быть закрыта проверкой автомобиля. Когда неавторизованный участник пытается получить доступ, ему должно появляться предложение ввести регистрационный номер автомобиля. Я сам разрабатываю конечную точку проверки (Cloud Run, REST — полностью документирована и предоставлена), поэтому ваша задача здесь — только компонент темы Discourse: экран с ограниченным доступом, форма ввода VRM, а также состояния успеха/ошибки. Для этого этапа мне нужен специалист, уверенно работающий с JS-компонентами тем на базе Ember в Discourse.

Тема XCombo Ещё один компонент — одна тема Discourse, которая служит одновременно справочником и пространством для обсуждения набора данных, который я поддерживаю. Первое сообщение закреплено и содержит встроенный виджет поиска (фильтры в реальном времени на основе таблицы Supabase), кнопку «Отправить мне полный список по электронной почте» (вызывает предоставленный конечный пункт, Resend отправляет PDF на зарегистрированный адрес участника) и ссылку, ведущую к ветке обсуждения ниже. Снова: логика поиска, конечный пункт и интеграция с Resend уже предоставлены — вам нужно только подключить контейнер на стороне Discourse. Это также даст вам представление о полном пути участника: портал → ссылка на ресурс → тема → поиск → электронная почта.

Все файлы, учётные данные, доступ к Supabase и документацию я предоставлю после присуждения контракта. Готов обсудить детали, если потребуется. Пожалуйста, расскажите о вашем опыте интеграции OAuth именно в Discourse и о том, работали ли вы ранее с компонентами тем на базе Ember.

Большое спасибо

1 лайк

Привет @larrybmb

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

Так это 250 за каждый платёж?

4 лайка

За веху или за час?

3 лайка

Привет, Лилли, спасибо за быстрый ответ. Уточню: $250 — это стартовая сумма общего бюджета проекта, но я готов быть гибким в вопросах бюджета для подходящего специалиста. Объем работ достаточно четко определен, поэтому я открыт к предложению с фиксированной ценой и графиком платежей, разбитым на этапы, если это необходимо.

Что касается вашего замечания о замене заголовка: я не прошу проводить никакую структурную работу. Существующая тема не заменяет никакие основные шаблоны Discourse. Это компонент темы, который внедряет собственную навигацию через JavaScript, подключаясь к событию discourse:ready и событиям изменения страницы. Я могу подтвердить, что это работает и успешно прошло как минимум два предыдущих обновления Discourse. Задача состоит лишь в том, чтобы убедиться, что он корректно отображается на всех типах страниц, и устранить любые недочеты. В текущем виде это должно быть безопасно при обновлении, но я с радостью рассмотрю возможность проверки этого в рамках этапа M1.

Надеюсь, это проясняет ситуацию?

1 лайк

Привет, Ричард, спасибо за быстрый ответ. Уточню: $250 — это стартовая сумма общего бюджета проекта, но я готов быть гибким в вопросах бюджета для подходящего кандидата. Объем работ достаточно четко определен, поэтому я открыт к предложению с фиксированной ценой с разбивкой платежей по этапам, если это необходимо.

Надеюсь, это проясняет ситуацию?

Это работа минимум на 2500 долларов, но, скорее всего, вдвое больше. Вероятно, 500 долларов уйдут только на то, чтобы понять, что должно делать ваша текущая тема, и переписать её в соответствии со стандартами Discourse.

Удачи.

4 лайка

Привет, Джей. Для ясности: я не прошу переписывать существующую тему. Я вполне доволен своими текущими файлами темы (они больше похожи на файлы дизайна, чем на реальные изменения темы, и будут предоставлены в качестве справочного материала). Уверен, что они справятся, но главная задача — разработка страницы профиля участника и связанных с ней процессов. Раздел по теме был скорее «посмотрите быстро, выявите любые пробелы в интерфейсе и дайте обратную связь» — переписывание не требуется.

Понимаю, что стартовый бюджет может показаться многим низким — он задумывался как отправная точка для переговоров. Готов поделиться полным техническим заданием с деталями и файлами со всеми заинтересованными лицами — постарался отразить это в сообщении.

Большое спасибо всем за ваши комментарии — они очень ценны. Я отредактировал свой пост, учитывая ваши замечания и добавив немного ясности.

А именно:

существующие файлы темы относятся только к дизайн-слою (цвета, шрифты, вставка навигации) — это не структурные переопределения шаблонов. Никакие базовые шаблоны Discourse не были изменены. Я не прошу никаких структурных изменений, а лишь прошу быстро взглянуть, выявить любые пробелы в интерфейсе и дать обратную связь.

Моя главная просьба — разработка страницы профиля участника и связанных с ней процессов. Готов рассмотреть предложения с фиксированной ценой от заинтересованных сторон, понимая, что ранее озвученная стартовая цена могла быть заниженной, поэтому я её убрал.

Без четкого объема работ назвать фиксированную цену сложно, так как задача слишком размыта. Однако, ознакомившись с комментариями, я оценил бы её в диапазоне от 5000 до 8000 долларов. Возможно, сумма будет ниже, если мы согласуем техническое задание, но это значительно больше вашего предложения в 250 долларов. Мои контактные данные указаны в биографии, если вы захотите обсудить детали.

2 лайка

Привет, @larrybmb, я отправил вам личное сообщение с подробным обзором целесообразности и несколькими уточняющими вопросами по поводу объема работ и предположений о реализации. Буду рад обсудить это подробнее, как только вы ознакомитесь с материалами.

1 лайк

Для ясности: я предлагаю, что core.scss, nav.scss и nav.js — это имена файлов, которые я не ожидал бы увидеть в теме или компоненте темы Discourse, поэтому вероятность того, что то, что вы сделали, будет сложно поддерживать или не будет работать с другими вещами, о которых вы просите, очень высока. Утверждение, что «ни один из основных шаблонов Discourse не был изменён», предполагает, что вы не следовали стандартам программирования Discourse.

2 лайка

Спасибо, Джей, это действительно полезная обратная связь. Файлы были созданы подрядчиком, и, честно говоря, я не уверен, что они были оформлены в соответствии с конвенциями тем Discourse. Отчасти поэтому я хочу, чтобы их проверил опытный специалист. Если потребуется реструктуризация в формат компонентов темы, я хотел бы, чтобы это было отмечено и оценено отдельно — не обязательно в рамках этого задания, так как я понимаю, что это дополнительные усилия.

Чтобы уточнить: файлы реализации были предоставлены мне, и я добавил их через вкладки «Заголовок», «JS» и «CSS» в панели администратора. То есть, по сути, это не структурированный компонент темы.

Благодарю за обратную связь.

1 лайк

Но вы не хотите строить на сломанном фундаменте.

Если бы это было окончанием работы и вы были бы хоббистом, это, вероятно, было бы приемлемо.

1 лайк

Я не утверждаю, что здесь дело именно в этом, но я слышу всё больше историй о разработчиках, которых просят разрабатывать или исправлять код, написанный с помощью инструментов генерации кода (vibe-code) так называемыми разработчиками, которые, вероятно, мало что знают о программировании. В любом случае, я бы относился к этому с осторожностью.

3 лайка

@pfaffman

Спасибо за совет — с радостью могу поделиться файлами в частном порядке, если вы заинтересованы в ознакомлении. Я не хоббист, а начинающая компания в автомобильной нише. Мои бэкенд-пайплайны надёжны и прошли архитектурный и security-аудит. Они размещены на GCP, а экземпляр Discourse хостится в облаке у Hostinger.

Не скажу, что я эксперт-разработчик, но за последние 10 лет я многое освоил самостоятельно, поэтому и обращаюсь за помощью сюда, а также знаю, когда стоит делегировать задачи.

Позвольте мне немного поразмышлять вслух. Действительно ли мне нужен кастомный OAuth для моего случая?

Нативные подключённые учётные записи, если их вывести на страницу профиля участника, могли бы сработать — при условии корректировки текста? (Например, я хочу узнать, является ли Джо Блоггс в моём сообществе тем же самым Джо Блоггсом, который взаимодействует с моей группой в Facebook (я извлекаю facebook_id через приложение разработчика Facebook). Если используется тот же самый идентификатор (что, как я полагаю, так и есть), это могло бы работать при наличии кастомного оформления вокруг (чтобы это выглядело как интегрированная часть сайта?).

Буду рад вашим мыслям.