Последние 14 дней я не вылезал из VS Code. Вместо того чтобы во что-то играть, решил замахнуться на full-stack мессенджер. Зачем? Чтобы разобраться, как реально работают реалтайм-системы, WebRTC и как держать под капотом тысячи сообщений без лагов.
Что уже работает:
• Стек: Vue 3 + TS + Node.js + PostgreSQL + Prisma.
• Чат: Не просто текст, а полноценные ответы (reply), редактирование, удаление и реакции в реальном времени.
• Performance: Написал свою виртуализацию списка (infinite scroll), чтобы лента летала даже в огромных чатах. • Коммуникации: Дискорд-подобные серверы с голосовыми каналами. Поднял даже два coTURN-сервера, чтобы надежно пробивать NAT и делать нормальные групповые звонки на 10+ человек, включая видео и стрим экрана. • Фишки: Темная/светлая темы, теги пользователей, анимированные аватарки и онлайн-статусы с точным таймингом.
Честно про «боль» разработки:
Заставить WebRTC стабильно работать под NAT. Пришлось попотеть с сигналингом и настройкой TURN-серверов на VPS, но зато теперь всё работает как надо. Сейчас правлю мелкие баги в UI (аватарки иногда шалят, интерфейс допиливаю по ходу), но функционально — это уже готовый рабочий продукт. Что дальше: «Кружочки» (видеосообщения). Поиск по сообщениям. Обертка в Capacitor, чтобы закинуть это на мобилки (к слову, PWA-версия уже на месте). За 2 недели получилось очень даже бодро! Можете затестить сами: typecrowd Важное примечание: E2EE (сквозное шифрование) пока в разработке, а мобильный интерфейс еще требует доработки — писать в PWA уже удобно, но остальные элементы UI на маленьких экранах пока могут быть «своеобразными». Не судите строго за дизайн — фокус сейчас на архитектуре!