Код, интерфейсы и трафик без воды
lawebbox

Одна статья, 90 языковых версий и Google: как пет‑проект превратился в платформу

На Хабре он расписал по шагам, как из скуки и учебной задачи на NestJS с Vue за полгода выросла соцсеть, которая автоматически переводит посты на 90 языков.

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 06 августа 2026 г.

Одна статья, 90 языковых версий и Google: как пет‑проект превратился в платформу

Бэклог опустел, деньги кончились — фронтендер ушёл в бэкенд. На Хабре он расписал по шагам, как из скуки и учебной задачи на NestJS с Vue за полгода выросла соцсеть, которая автоматически переводит посты на 90 языков. Для аудитории lawebbox это готовый разбор типичных костылей современного веб-стека, помноженных на LLM.

Стек и костыли

Автор не стал изобретать велосипед и пошёл по пути наименьшего сопротивления. NestJS — потому что Node.js «самое короткое, что нашлось». Vue — потому что не хочется трогать React. Документная MongoDB — потому что Postgres «не поставился за пять минут», а Docker автор на тот момент не знал. Знакомо до боли. В итоге вместо готовых связей реляционной БД мы получаем ручной контроль ограничений на уровне CRUD-методов. Сам автор признаётся, что это добавило ему работы процентов на тридцать.

Токены решили хранить в httpOnly-куках — выяснилось это в диалоге с DeepSeek, хотя про такое пишут в первой главе любого учебника по веб-безопасности. Почту сначала прикрутили через Яндекс, но «Яндексу не понравился немецкий сервер», пришлось срочно мигрировать на Resend. Банальный geo-фейл, который в проде стоит денег и потерянных лидов.

LLM как второй архитектор

Показательный момент не в коде, а в продуктовых решениях. Автор прямо спрашивает у модели: «Какой шанс, что кто-то будет постить в новой соцсети без аудитории?» Модель отвечает — «один из ста». Вывод автора не унывать, а расширять воронку входа: раз людей не привлечь, надо сделать так, чтобы их посты читали в других странах. В итоге подключили машинный перевод, словарь вырос с 5 до 90 языков — «включая суахили, почему бы и нет». В пет-проекте это выглядит как забавная идея, в коммерческом продукте — это мощное программное SEO и типичная ловушка с дублями страниц.

Где это сломается

Если вы думаете повторить этот путь на продакшене, вот короткий список граблей:

  • БД. Документная или реляционная — это не вкусовщина, а архитектурное решение. Один docker-compose up с Postgres сэкономит вам месяц боли с консистентностью.
  • Почта. Забудьте про бесплатные SMTP типа Яндекса для прода. Resend, SES или Postmark — иначе получите кернел-паник в три часа ночи, когда письма перестанут уходить из-за смены региона.
  • SEO. 90 версий одной страницы — это не просто переключатель языка. Это hreflang, canonical, разделённые sitemap'ы и риск получить фильтр за «тонкий контент» от автоперевода. Не настроите сразу — Google склеит URL, и весь трафик умрёт.
  • Бэкапы. mongodump на живых коллекциях преподносит сюрпризы. Восстановление тестируют до инцидента, а не когда база упала.

Пет-проект на полгода — это нормальный способ пройти путь от UI до прод-деплоя. Но если в итоге захотите вкатить это в стейдж, а потом и в прод, — не забывайте про бэкапы. И мониторинг. И мониторинг бэкапов.