golang

Я собрал свой мессенджер по вечерам после работы

  • пятница, 19 июня 2026 г. в 00:00:10
https://habr.com/ru/articles/1048960/

Я обычный инженер‑программист в банке. Вечерами, после работы и семьи, я начал эксперимент: смогу ли я один, с помощью нейросетей, сделать мессенджер таким, каким, как мне кажется, он должен быть? Не «убийцу Telegram» или кого‑либо другого, а просто альтернативу — спокойное место для общения. Без шума, без бесконечных кружков, без ощущения, что ты должен читать каналы, на которые никогда не подписывался.

Знаете это чувство, когда подписки и личные чаты свалены в одну кучу? Да, папки есть, но эти вездесущие счётчики непрочитанного… они просто сводят с ума. Ты выходишь из канала, а тебя кто‑то туда возвращает — и ты даже не понимаешь, как и кто это сделал.

Я хотел чёткого разделения контекстов: группы отдельно, контакты отдельно, скрытые диалоги — чтобы глаза отдыхали. И спокойного, мягкого интерфейса. Сидя целый день перед монитором, хочется смотреть на приятные цвета, плавные переходы, а не на очередной аляповатый дизайн.

В общем то немного покумекав, я подумал: «Если тебе что‑то не нравится — сделай сам!» И я начал делать.

Так родился Pulse.

Как это начиналось

Первый шаг — терминальный клиент и простенький сервер. Я помню момент, когда консоль написала «Connected». Моему счастью не было предела. Я подумал: «Оно работает! Это начало чего‑то большего». Спойлер: оно действительно работало, но только на localhost и при полной луне.

Дальше — больше. Мне стало безумно интересно заглянуть «под капот». Как вообще работают сообщения? WebSocket, сессии, идемпотентность, доставка, статусы прочитанного… Я, честно говоря, понятия не имел, во что ввязываюсь. Каждая новая фича открывала целый мир, и этот мир иногда больно бил по голове. А иногда и прекрасно удивлял.

Например, когда я попытался отредактировать чужое сообщение (по глупости, в два часа ночи, потому что котелок уже не варил), база данных выдала мне жёсткое «нет». Это была моя первая личная встреча с серверной защитой и защитой от тупых пользователей. Спасибо, PostgreSQL, что не дал мне опозориться перед пользователями.

И да, я использовал ChatGPT. Это сейчас называют «вайбкодинг»? Вроде бы. Я описывал свои идеи, виденье и транслировал свое желание сделать что‑то достойное. Я конечно, разбираюсь в программировании, но вот так, чтоб писать сложные какие‑то штуки на Go и React — было бы для меня неподъемной задачей... Такой подход позволил мне двигаться в 5–10 раз быстрее и совершать глупые ошибки в 5–10 раз чаще, но это уже детали.

Что получилось за 2 месяца

Сейчас Pulse — это:

  • Личные сообщения и группы с редактированием, удалением (у себя и у всех), закреплением.

  • Аватарки пользователей и групп с кропом, масштабированием, разными размерами (64/128/512 пикселей).

  • Свой медиа‑сервис Pulse Media Core, который хранит изображения, нарезает варианты, поддерживает публичные и приватные файлы, умеет удалять.

  • Собственный прикладной протокол поверх WebSocket — типизированные события, идемпотентность, read/unread на серверной хронологии.

  • PWA — можно установить на телефон как приложение и даже получать уведомления. Ну, пока они приходят. Честно скажу: через пару часов телефон может решить, что Service Worker устал, и тихонько их выключит. Я ещё не до конца победил эту магию. Но если вы дождётесь — буду очень благодарен.

  • 4 темы: Ночь, Фокус, Свет, Сакура — мягкие, без резких цветов.

  • Атмосфера: убрал бесконечные счётчики и кричащие элементы. Статусы сообщений — мягкие пульсирующие точки. Разделители дней в истории, дата последней активности в сайдбаре.

Я активно пользуюсь Pulse сам и общаюсь там с женой и знакомыми. Он ощущается… приятным, дружелюбным. Его хочется «пощупать».

Но есть же уже Telegram или, например, тот же Макс?

Спросите вы и будете правы. Я не строю иллюзий. У Telegram — миллиарды пользователей. Но в последнее время меня начала раздражать его перегруженность. А ещё для Telegram сейчас нужны вечные VPN и прокси. Которые вчера работали, сегодня — нет, а завтра перестают существовать. Постоянно искать новые, переключать, ну, честно признаться, я от этого устал… Это же издевательство над пользователем, не от самой телеги, но увы... У Pulse нет этой проблемы. Он не блокируется, потому что он российский, сервера в РФ, никто его не замедляет и не закрывает, ну и старается хотя бы частично соблюдать правила и законы нашей необъятной. Просто открыл — и работает. Без плясок с бубном.

«Макс» недавно удалили из App Store, и его пользователи на iOS остались без удобного канала связи. Российский рынок мессенджеров сейчас в турбулентности. Pulse не пытается быть «убийцей». Он просто предлагает другое: разделение внимания, тихий интерфейс, контроль над своим временем. Кстати, в Максе меня еще бесит баг с пуш-уведомлениями. Сценарий такой:
1. Пришел пуш, ты на него нажимаешь.
2. Открывается чат, но сообщения из пуша нет.
3. Переоткрываешь Макс — сообщение появляется.

Очень сильно... БЕСИТ!
В общем, исходя из боли и появился Пульс....

Что дальше

Да не знаю. Я просто его делаю и вдруг может он кому‑то понадобится и понравится. Я думал что он всегда будет эдаким моим пет‑проектом, на котором я смогу учиться, становиться лучше. Но желание им поделиться хотя бы вот на хабре, еще может где‑нибудь меня победило:) Я честно сопротивлялся.

Может быть, вы найдёте в Pulse что‑то для себя. Что‑то полезное или просто спокойное — я не знаю. У каждого свой вкус. Я просто делюсь тем, что получилось, а не навязываюсь.

Если захотите посмотреть — вот сайт: pulsehq.ru
Если хочется прям почитать про историю проекта — с публичной страницей я тоже заморочился — https://pulsehq.ru/about

Броско ли? Да, но хотелось сделать красиво... Дерзко ли? Возможно. Но я и не планирую какой‑то взрыв или выстрел. Я никого не хочу «убить», я хочу дать пользователям альтернативу.
Регистрация, к слову, простая — ввел имя и все. Это пока единственный косяк, который не совсем соблюдает законы РФ. Но в дальнейшем обещаю исправиться, хах:)

В планах — поиск по сообщениям, нормальные push‑уведомления на iOS, а ещё Spaces (переключение контекстов «Работа/Личное»). Но это уже после того, как я пройду операцию на руке. Да, неожиданный поворот: создатель мессенджера временно ограничен в печатании. Если я не отвечаю на комментарии сутки — значит, я либо доделываю фичу, либо меня уложили в больницу. В любом случае, я вернусь.

Проект сырой, в нем есть косяки, шероховатости, недонастроенное окружение и еще много всего, что должно быть в мессенджерах. Но я делаю его один. Потихоньку, помаленьку, но главное, что делаю, и Пульс уже живой...

Вот, в общем‑то, пока что всё. Если дочитали, то большое спасибо:) Буду рад любым вопросам, комментариям, отзывам... Может быть, предложениям? Давно статьи никакие не писал. Аж страшновато немного)