Discord заблокирован, VPN лагает. Я не умею кодить, но мы с другом-разработчиком создали свой P2P-мессенджер, который нельзя отключить

Я не программист. Моя стихия — придумывать концепции, логику продуктов и нарезать задачи. Но когда в России заблокировали Discord, наша привычная игровая и рабочая экосистема рухнула. Попытки реанимировать TeamSpeak провалились из-за его интерфейса из нулевых, созвоны в Telegram не вывозили долгих сессий, а постоянная возня с VPN и проседания пинга окончательно добили. Тогда я пришел к своему другу-разработчику с безумной идеей: «Давай сделаем свой Discord. Но такой, чтобы трафик шел напрямую между пользователями, и его технически невозможно было заблокировать из единого центра». Я нарисовал логику связности «на пальцах», а друг заперся на несколько месяцев и воплотил это в коде. Так появился Pulsar Wave.

🛑 Как мы искали замену и почему «готовые» решения — это боль

Мы честно пытались приспособиться к реальности, но быстро поняли, что на рынке пусто:

  • Танцы с бубном вокруг Discord: Скрипты обхода блокировок ломаются после каждого обновления. Ты сидишь в катке, провайдер меняет настройки фильтрации — и твоя команда внезапно оглохла.
  • Легенды прошлого (TeamSpeak, Mumble): Они стабильны, но они безнадежно устарели. Нам не нужен просто аудиоканал, нужен современный UX: удобное создание серверов (гильдий), текстовые чаты с разметкой, обмен файлами и стриминг экрана в один клик.
  • Корпоративные гиганты (Slack, Mattermost): Слишком перегружены коммерческими функциями и полностью лишены геймерского вайба.

💡 Моя идея: Мессенджер, который принадлежит пользователям

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

Я предложил другу взять за основу концепцию P2P (Peer-to-Peer).

Если объяснять простыми словами: Ваши сообщения, файлы и голос должны идти напрямую от вашего компьютера к компьютеру вашего друга, минуя посредников.

Конечно, совсем без сервера нельзя. Друг поднял центральный узел (на FastAPI и PostgreSQL), но его роль минимальна: помочь вам зарегистрироваться, показать список ваших каналов и просто «познакомить» устройства пользователей друг с другом (сигналинг WebRTC). Как только коннект установлен — сервер отходит в сторону. Он физически не может прочитать вашу переписку или подслушать разговор.

🛠 Как мой друг превратил идею в работающий софт

Когда мы утвердили концепцию, началась магия разработки. Друг выбрал быстрый и не прожорливый стек, чтобы приложение не «жрало» оперативку во время тяжелых игр:

  1. Интерфейс: React + Vite — сделали интерфейс максимально близким к Discord, чтобы пользователям не пришлось переучиваться.
  2. Десктоп (Windows): Никакого тяжелого Electron. Друг упаковал всё в Tauri. Приложение летает, поддерживает автообновления и глобальные хоткеи для микрофона.
  3. Мобилки (Android): Обернули через Capacitor в полноценный рабочий APK.

Архитектурные костыли, которые мне пришлось продумать

В P2P-сетях есть страшный сон — закрытые порты и строгие NAT у интернет-провайдеров, из-за которых компьютеры не видят друг друга напрямую. Чтобы решить эту проблему, мы внедрили три уровня страховки:

  • Зашифрованный туннель (TURN): Если прямой связи нет, трафик идет через наш сервер, но в жестко зашифрованном виде (DTLS) — сервер работает просто как слепой транслятор.
  • Участник-мост: Если у меня и моего друга NAT «не пробивается», но с нами в канале сидит третий человек с открытыми портами, система автоматически пустит наши сообщения через его устройство.
  • E2E Mailbox (Почтовый ящик): А если друга вообще нет в сети? Компьютер отправляет зашифрованный пакет на сервер. Сервер хранит этот «слепой» замок, понятия не имея, что внутри. Как только друг заходит в сеть, его приложение забирает пакет, а сервер его стирает.

В чате это выглядит круто: пока сообщение лежит на сервере и ждет получателя, горит статус ☁ отправлено на сервер. Когда дошло до устройства — метка пропадает, а история сохраняется локально в памяти устройств (IndexedDB).

🎙 Голос и... боты, которые работают без сервера

Звук и трансляция экрана работают по mesh-схеме: устройства участников обмениваются потоками напрямую друг с другом. Мы выжали максимум из встроенного шумоподавления, звук чистый, а настройки позволяют кастомизировать аудиосистему под любые наушники.

Но самая большая головная боль для меня как для проектировщика была в ботах. В обычном Дискорде бот — это программа на стороннем сервере, которая читает чат. У нас сервер ничего не видит. Как быть?

Мы придумали решение: боты в Pulsar Wave — это правила JSON (триггер → условие → действие). Бот загружается прямо в приложение и крутится на компьютерах администраторов сервера. Прямо в интерфейсе можно собрать автоматическое приветствие новичков, выдачу ролей или модерацию. Сценарии можно экспортировать в один клик файлом *.pwbot.json.

📈 Что у нас готово прямо сейчас?

Мы довели проект до версии 0.4.3. Это уже не просто концепт на бумаге, а полностью рабочая экосистема:

  • Запущен сайт pulsar-wave.ru и авторизация.
  • Работают серверы, категории, текстовые и голосовые каналы через P2P.
  • Написана сложная система ролей и прав доступов (как в Discord).
  • Работает конструктор ботов.

Конечно, пока готовы не все фичи. Мы заложили в интерфейс маркетплейс и подписку Wave Pro, но сейчас при клике на них вылетает честная заглушка «Ошибка 501 / Скоро» — платежные шлюзы пока на очереди. Сейчас наша главная цель — отточить стабильность P2P-связи при любых провайдерах.

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

Будем рады, если вы зайдете протестировать нашу сборку. Ссылки на веб-версию и десктоп оставили на сайте.

Как вам такая P2P-архитектура? Рискнули бы переехать на мессенджер, который не зависит от центрального сервера, или продолжите искать рабочие VPN? Давайте обсудим.

22