Skip to content

komly/smalltalk

Repository files navigation

SmallTalk - Простая видеосвязь

Release Build Status Go Version License

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

Особенности

  • 🚀 Single Binary - все упаковано в один исполняемый файл
  • 🎥 WebRTC - прямая P2P видеосвязь между участниками
  • 🌐 Кроссплатформенность - работает на Linux, macOS, Windows
  • 📱 Адаптивный интерфейс - поддержка мобильных устройств
  • 🔒 Приватность - никаких аккаунтов, данные не сохраняются
  • Быстрый запуск - готов к работе за секунды
  • 🌍 Публичные туннели - автоматическое создание ngrok туннелей для доступа из интернета

Быстрый старт

Скачать готовый бинарник

  1. Перейдите в раздел Releases

  2. Скачайте файл для вашей платформы:

    • smalltalk-linux-amd64 - для Linux
    • smalltalk-darwin-amd64 - для macOS (Intel)
    • smalltalk-darwin-arm64 - для macOS (Apple Silicon)
    • smalltalk-windows-amd64.exe - для Windows
  3. Запустите:

# Linux/macOS
chmod +x smalltalk-*
./smalltalk-linux-amd64

# Windows
smalltalk-windows-amd64.exe
  1. Откройте в браузере: http://localhost:8080

Установка через Homebrew (macOS)

brew tap komly/smalltalk
brew install smalltalk
smalltalk

Настройка публичного доступа (опционально)

Для создания публичных туннелей и доступа из интернета:

  1. Установите ngrok:
# Автоматическая установка
./install-ngrok.sh

# Или вручную с https://ngrok.com/download
  1. Настройте токен авторизации:
# Получите токен на https://ngrok.com после регистрации
ngrok config add-authtoken YOUR_TOKEN
  1. Запустите приложение:
./smalltalk

Приложение автоматически создаст публичный туннель и покажет ссылку в интерфейсе!

Сборка из исходников

# Клонируем репозиторий
git clone https://github.com/komly/smalltalk.git
cd smalltalk

# Устанавливаем зависимости
go mod download

# Собираем для текущей платформы
make build-local

# Или собираем для всех платформ
make build

# Запускаем
./bin/smalltalk

Использование

Создание комнаты

  1. Откройте http://localhost:8080
  2. Нажмите "Создать комнату"
  3. Поделитесь ссылкой с собеседником
  4. Дождитесь подключения

Подключение к комнате

  1. Получите ссылку от создателя комнаты
  2. На главной странице нажмите "Подключиться по ссылке"
  3. Вставьте ссылку и нажмите "Подключиться"

Управление звонком

  • 📹 Камера - включить/выключить видео
  • 🎤 Микрофон - включить/выключить звук
  • 📞 Завершить - закончить звонок
  • 📋 Копировать ссылку - скопировать ссылку на комнату

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

На локальной машине

# Запуск на порту 8080 (по умолчанию)
./smalltalk

# Запуск на другом порту
PORT=3000 ./smalltalk

На сервере

# Запуск в фоне
nohup ./smalltalk > smalltalk.log 2>&1 &

# Или с systemd
sudo cp smalltalk /usr/local/bin/
sudo cp smalltalk.service /etc/systemd/system/
sudo systemctl enable smalltalk
sudo systemctl start smalltalk

С Docker

# Сборка образа
docker build -t smalltalk .

# Запуск
docker run -p 8080:8080 smalltalk

# Или с docker-compose
docker-compose up -d

Конфигурация

Приложение настраивается через переменные окружения:

  • PORT - порт для веб-сервера (по умолчанию: 8080)
  • HOST - адрес для привязки (по умолчанию: все интерфейсы)
  • ENVIRONMENT - установите production для отключения ngrok туннелей

Архитектура

┌─────────────────┐    WebSocket    ┌─────────────────┐
│   Участник A    │◄─────────────────┤   Участник B    │
└─────────────────┘                 └─────────────────┘
         │                                   │
         │            WebRTC P2P             │
         └───────────────────────────────────┘
                        │
                ┌───────────────┐
                │  SmallTalk    │
                │   Server      │
                │  (Signaling)  │
                └───────────────┘
  • WebSocket - для обмена signaling сообщениями
  • WebRTC - для прямой P2P передачи видео/аудио
  • STUN серверы - для NAT traversal (Google STUN)

Разработка

# Установка зависимостей
make deps

# Запуск в режиме разработки
make run

# Тестирование
make test

# Очистка
make clean

Технологии

  • Backend: Go, Gorilla WebSocket, Gorilla Mux
  • Frontend: Vanilla JavaScript, WebRTC API
  • Сборка: Go embed для статических файлов

Лицензия

MIT License - см. файл LICENSE

Вклад в проект

  1. Fork проекта
  2. Создайте feature ветку (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

Поддержка

Если у вас есть вопросы или проблемы:

  1. Проверьте Issues
  2. Создайте новый Issue с описанием проблемы
  3. Приложите логи и информацию о системе

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published