Клиент — православная социальная сеть «Прихожане» (prihozhane.com): площадка знакомств и общения для верующих. Сайт работает с 2004 года и объединяет прихожан из России, Беларуси, Украины, Казахстана и других стран.
Задача — сохранить живое сообщество на современной платформе и развить продукт вокруг приходской жизни, а не только ленты постов. Старый движок SocialEngine морально устарел: сложно было добавлять фичи, держать безопасность, SEO и интеграции. Нужно было перенести пользователей, переписку, форумы, блоги, фото и связи «дружба / подписка» без потери истории — и параллельно построить то, чего на старой версии не было.
Цели проекта: — безопасно мигрировать данные с SocialEngine на форк Sngine (PHP + MySQL + Smarty); — сделать каталог храмов с карточками, поиском и привязкой «мой храм»; — связать людей с приходами: карта прихожан, список прихожан храма, профиль; — защитить пользовательский контент: модерация фото и текстов, капча, очередь заявок; — усилить SEO и мультиязычность лендинга, каталогов людей и храмов; — дать админам инструменты: заявки на храмы, импорт новостей, здоровье системы, бэкапы.
Ограничения: большой архив медиа (порядка 22 ГБ загрузок), сотни тысяч диалогов, справочник храмов около 14 тысяч записей, продакшен на РФ-хостинге. Контент должен оставаться бережным к теме веры и семьи. Основные сценарии — регистрация, общение, поиск единомышленников и храма — остаются бесплатными.
Работа шла как продукт плюс инженерия, а не как «поставить шаблон».
Миграция с SocialEngine
Спроектировал поэтапный перенос с таблицами соответствия ID, чтобы прогоны можно было повторять и не ломать уже перенесённое. Отдельными скриптами перенёс пользователей (включая геолокацию), аватары, друзей и подписки, личные сообщения (около 792 тысяч диалогов), форумы с картинками в телах постов, блоги и связанные медиа. Старые пароли не восстанавливал: импорт шёл на новые bcrypt, вход — через сброс пароля. Каждый этап: бэкап, прогон, выборочная проверка в интерфейсе.
Каталог храмов и приходская география
Расширил единый справочник церквей, не завёл второй каталог. Сделал публичный список с поиском и фильтрами (город, епархия, «рядом со мной» по координатам), карточку храма, SEO, счётчик прихожан, выбор «мой храм» в профиле. Пользователь может добавить храм или предложить правку — заявка уходит в модерацию, а не правит карточку напрямую. Карточку связал с картой прихожан (переход по идентификатору храма). Импорт и обогащение данных — отдельными PHP-миграциями, повторный запуск безопасен.
Соцсеть и продукт
Кастомная тема, лендинг со знакомствами и сообществом, поиск прихожан, блог, раздел свадеб, православный календарь, импорт новостей из внешних источников в админке. Интерфейс на gettext: в коде английские ключи, переводы в файлах локалей, без жёстко прошитого русского в PHP.
Модерация и безопасность
Подключил проверку изображений Yandex Vision к загрузкам (посты, аватарки, заявки на храмы, чат): откровенный и жестокий контент отсекается до очереди модератора, спорные случаи уходят на ручной разбор. Для постов и блогов — текстовая политика и классификация. На формах регистрации, контакта и сброса пароля — Yandex SmartCaptcha, чтобы работало с российских IP без обходов. Роли: админ, редактор храмов, представитель прихода (только свой храм).
Эксплуатация
Прод на PHP 8.4 и MySQL: деплой, ручные миграции, метрики, бэкапы. Пользовательские загрузки живут отдельно от кода, в репозиторий их не тащил.
Сайт в продакшене. Сообщество пользуется привычными сценариями соцсети и новыми приходскими разделами.
Что получилось на практике: — история сообщества сохранена: профили, связи, форумы, блоги, переписка; — каталог храмов — рабочий раздел продукта: поиск, карточка, «мой храм», список прихожан для авторизованных, точка на карте; — модераторы разбирают заявки на добавление и правку храмов в админке, а не правят базу руками; — автоматическая проверка фото снижает поток неприемлемого контента до публикации; — лендинг и каталоги заточены под поиск вроде «православные знакомства», «храм», «прихожане», плюс мультиязычные мета-теги; — админы импортируют новости, смотрят очереди и здоровье системы.
Как применяют: люди регистрируются, ищут единомышленников и храм, общаются в сообщениях и на форуме, читают блог и новости, отмечают свой приход. Редакторы наполняют карточки (фото, настоятель, контакты). Представитель прихода видит заявки по своему храму. Код остаётся развиваемой базой (форк Sngine), а не замороженным конструктором.
Для заказчика это не лендинг «под ключ», а работающая православная соцсеть с живыми данными, каталогом около 14 тысяч храмов и инфраструктурой, которую можно дальше наращивать.