Skip to content

MogioR/ZVOnok

Repository files navigation

ZVOnok

English README

LLM slop Cursor-поделка для видеоконференций. Проект написан на Go, ест мало оперативки и в целом задуман как простой self-hosted вариант, который можно поднять для себя или адаптировать под свои задачи.

Если кому-то пригодится, можно брать и использовать как основу.

Что это

Небольшой WebRTC-сервис с фронтендом на Vue и бэкендом на Go.
Go здесь отвечает за сигнализацию, раздачу статики и API для музыкального плеера, а в браузере работает сама realtime-часть.

Фичи

  • ✅ Чат
  • ✅ Статусы
  • ✅ Мобильная версия
  • ✅ Стримы с выбором качества
  • ✅ Возможность ставить музыку из YouTube
  • 🚧 Видео с вебки (в карточках участников)
  • ✅ Комнаты с паролем
  • ✅ Раздельная регулировка громкости голоса и стрима экрана
  • ✅ Миниигры (угадай аниме по картинке / по опенингу)

Стек

  • Backend: Go
  • Frontend: Vue 3 + Vite
  • Realtime: WebSocket + WebRTC
  • Music: yt-dlp + ffmpeg
  • Deployment: Docker Compose + Coturn

Почему может быть полезно

  • Небольшой и относительно простой код без тяжёлой инфраструктуры
  • Низкое потребление памяти за счёт Go-бэкенда
  • Можно быстро развернуть на своём сервере
  • Можно использовать как базу для своего pet-project или внутреннего инструмента

Развёртывание

Подробная документация по деплою и CI/CD хранится локально и не лежит в публичном репозитории.

Для локального запуска достаточно:

cp env.example .env
docker compose up --build -d

Локальная разработка

Backend

cd backend
go mod tidy
go run .

По умолчанию сервер слушает http://localhost:8080.

Frontend

cd frontend
npm install
npm run dev

Vite dev-сервер поднимется на http://localhost:5173 и будет проксировать /ws на Go-бэкенд.

Продакшн-сборка без Docker

Собрать фронтенд:

cd frontend
npm install
npm run build

После сборки статика попадёт в backend/static.

Запустить бэкенд:

cd backend
go mod tidy
go run .

Переменные окружения

Основные переменные:

  • PORT — порт приложения внутри контейнера
  • HOST_PORT — внешний порт на хосте
  • STATIC_DIR — директория со статикой
  • TZ — таймзона
  • TURN_PUBLIC_IP — внешний IP для TURN
  • TURN_PRIVATE_IP — внутренний IP для TURN
  • TURN_USER — логин TURN
  • TURN_PASS — пароль TURN

Шаблон лежит в env.example.

Примечания

  • Это не enterprise-решение и не законченный продукт
  • Интерфейс, логика и архитектура местами довольно экспериментальные
  • Проект больше про "быстро собрать рабочую штуку", чем про идеальную вылизанную платформу

Лицензия и использование

Если проект тебе полезен, используй как хочешь в рамках своей лицензии/форка/репозитория. При необходимости спокойно допиливай под себя.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors