Messendzher: опенсорс-мессенджер с групповыми видеозвонками, историями и каналами на Next.js + NestJS + WebRTC
Messendzher — это опенсорсный мессенджер, который я делал для себя, но решил выложить в открытый доступ.
Возможности:
- Личные чаты, группы (до 1000 человек) и публичные каналы
- Групповые видеозвонки через WebRTC (сигналинг через Socket.IO)
- Истории 24 часа с просмотрами и ответом в личку
- Реакции, репосты, редактирование и удаление сообщений
- Отправка файлов и изображений через S3 / MinIO
- Вход по телефону (OTP, JWT)
- PWA (можно установить на телефон как приложение)
- Web Push уведомления
- E2E-шифрование (пока в демо-режиме)
Технологии:
- Клиент: Next.js 15, React 19, Tailwind, Framer Motion, Socket.IO client
- Бэкенд: NestJS 10, Prisma 6, PostgreSQL, Redis, MinIO, Web Push
- Реалтайм: Socket.IO, WebRTC
- Инфраструктура: Docker Compose, pnpm workspaces
Как запустить локально:
pnpm start
Скрипт поднимет контейнеры, накатит миграции и запустит dev-сервер. Подробнее в README на GitHub.
Ссылки:
Поддержать проект: https://dalink.to/ryzwe
Буду рад звёздам на GitHub, фидбеку по коду и архитектуре. Если кому-то нужен свой мессенджер под ключ (для школы, клуба, бизнеса) — пишите в личку на пикабу.
Вопросы, пулл-реквесты, критика — всё принимается.