asvvizit/streamtalk

Laravel package for real-time chat system implementation

0.1.3 2025-06-22 21:23 UTC

This package is auto-updated.

Last update: 2025-06-23 17:36:37 UTC


README

Laravel's #1 one-to-one chatting system package. Adds a complete real-time messaging system to new/existing Laravel applications with minimal setup.

Key Features (Ключевые особенности)

  • Real-time messaging with Pusher
  • User authentication middleware
  • API and Web route separation
  • File attachments support
  • Dark/light mode

Rus - StreamTalk для сервисов проектов (Laravel пакет)

Laravel's #1 система чатов "один-на-один". Добавляет полноценную систему обмена сообщениями в реальном времени в новые/существующие Laravel приложения с минимальной настройкой.

Key Features (Ключевые особенности)

  • Real-time messaging with Pusher
  • User authentication middleware
  • API and Web route separation
  • File attachments support
  • Dark/light mode

Installation

composer require asvvizit/streamtalk
php artisan StreamTalk:install

Add in file .env

STREAMTALK ROUTE CONFIG

Система распознаёт автоматические пути контроллеров, но вы можете их переопределить пред установкой.

Внесите те ключи которые хотите переопределить или закомментируйте при помощи знака решётки в начале строки

# ==============================================================================
# ОСНОВНЫЕ НАСТРОЙКИ STREAMTALK
# ==============================================================================

# Режим отладки (true/false). По умолчанию: false.
STREAMTALK_DEBUG=true

# Цветовая тема: "light", "dark" или "auto". По умолчанию: "auto".
STREAMTALK_THEME=auto

# Название мессенджера. По умолчанию: "StreamTalk Messenger".
STREAMTALK_NAME="My Messenger"

# Диск для хранения файлов (аватары, вложения). По умолчанию: 'public'.
STREAMTALK_STORAGE_DISK=streamtalk

# Максимальный размер файла в МБ. По умолчанию: 150.
STREAMTALK_MAX_FILE_SIZE=50

# Количество сообщений на странице. По умолчанию: 25.
STREAMTALK_MESSAGES_PER_PAGE=30

# Порядок сообщений: "asc" (старые сверху) или "desc" (новые сверху). По умолчанию: "asc".
STREAMTALK_MESSAGES_ORDER=asc

# ==============================================================================
# НАСТРОЙКИ PUSHER (ОБЯЗАТЕЛЬНЫЕ!)
# ==============================================================================

# Драйвер широковещания. Должен быть 'pusher'.
BROADCAST_DRIVER=pusher

# ID приложения Pusher (из аккаунта pusher.com)
PUSHER_APP_ID=your_app_id

# Ключ приложения Pusher
PUSHER_APP_KEY=your_app_key

# Секрет приложения Pusher
PUSHER_APP_SECRET=your_app_secret

# Кластер Pusher (например: mt1, eu, us2). По умолчанию: 'mt1'.
PUSHER_APP_CLUSTER=mt1

# ==============================================================================
# ВЕБ-МАРШРУТЫ
# ==============================================================================

# Префикс URL для веб-маршрутов. По умолчанию: 'streamtalk'.
STREAMTALK_ROUTES_PREFIX=chat

# Префикс для имен маршрутов. По умолчанию: 'streamtalk.'.
STREAMTALK_ROUTES_AS=chat.

# Middleware для веб-маршрутов (через запятую). По умолчанию: 'web,auth'.
STREAMTALK_ROUTES_MIDDLEWARE=web,auth,verified

# Пространство имен для контроллеров. По умолчанию: 'App\Http\Controllers\StreamTalk'.
STREAMTALK_ROUTES_NAMESPACE=App\Http\Controllers\Messenger

# ==============================================================================
# API-МАРШРУТЫ
# ==============================================================================

# Префикс URL для API-маршрутов. По умолчанию: 'streamtalk/api'.
STREAMTALK_API_ROUTES_PREFIX=chat/api

# Префикс для имен API-маршрутов. По умолчанию: 'api.streamtalk.'.
STREAMTALK_API_ROUTES_AS=api.chat.

# Middleware для API-маршрутов (через запятую). По умолчанию: 'api,auth:sanctum'.
STREAMTALK_API_ROUTES_MIDDLEWARE=api,auth:sanctum

# Пространство имен для API-контроллеров. По умолчанию: 'App\Http\Controllers\StreamTalk\Api'.
STREAMTALK_API_ROUTES_NAMESPACE=App\Http\Controllers\Messenger\Api

# ==============================================================================
# АВАТАРЫ ПОЛЬЗОВАТЕЛЕЙ
# ==============================================================================

# Папка для хранения аватаров. По умолчанию: 'users-avatar'.
STREAMTALK_AVATAR_FOLDER=avatars

# Аватар по умолчанию. По умолчанию: 'avatar.png'.
STREAMTALK_DEFAULT_AVATAR=default-avatar.jpg

# Включить Gravatar (true/false). По умолчанию: true.
STREAMTALK_GRAVATAR_ENABLED=true

# Размер изображения Gravatar. По умолчанию: 200.
STREAMTALK_GRAVATAR_SIZE=150

# Тип изображения Gravatar. По умолчанию: 'identicon'.
STREAMTALK_GRAVATAR_IMAGESET=mm

# ==============================================================================
# УВЕДОМЛЕНИЯ И ЗВУКИ
# ==============================================================================

# Включить уведомления (true/false). По умолчанию: true.
STREAMTALK_NOTIFICATIONS_ENABLED=true

# Каналы уведомлений (через запятую). По умолчанию: 'database,broadcast'.
STREAMTALK_NOTIFICATION_CHANNELS=database,broadcast,mail

# Включить звуки (true/false). По умолчанию: true.
STREAMTALK_SOUNDS_ENABLED=true

# Путь к звукам. По умолчанию: 'sounds/StreamTalk'.
STREAMTALK_SOUNDS_PATH=sounds/messenger

# Звук нового сообщения. По умолчанию: 'new-message-sound.mp3'.
STREAMTALK_NEW_MESSAGE_SOUND=notification.mp3

# ==============================================================================
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
# ==============================================================================

# Показывать статус пользователя (true/false). По умолчанию: true.
STREAMTALK_SHOW_STATUS=true

# Показывать подтверждение прочтения (true/false). По умолчанию: true.
STREAMTALK_SHOW_READ_RECEIPTS=true

# Формат даты сообщения. По умолчанию: 'F j, Y, g:i a'.
STREAMTALK_DATE_FORMAT="d.m.Y H:i"

# Включить кеширование (true/false). По умолчанию: true.
STREAMTALK_CACHE_ENABLED=true

# Продолжительность кеширования в минутах. По умолчанию: 60.
STREAMTALK_CACHE_DURATION=30

# Имя очереди для уведомлений. По умолчанию: 'default'.
STREAMTALK_QUEUE_NOTIFICATIONS=notifications

# Включить модерацию контента (true/false). По умолчанию: false.
STREAMTALK_CONTENT_MODERATION=false

# ==============================================================================
# ИНТЕГРАЦИИ (для разработчиков)
# ==============================================================================

# Класс для хука перед отправкой сообщения
STREAMTALK_HOOK_BEFORE_MESSAGE=App\Hooks\BeforeMessageHook

# Класс для хука после отправки сообщения
STREAMTALK_HOOK_AFTER_MESSAGE=App\Hooks\AfterMessageHook

# Класс для хука при получении сообщения
STREAMTALK_HOOK_MESSAGE_RECEIVED=App\Hooks\MessageReceivedHook

Add block in file config/filesystems.php

    /* Диск для StreamTalk (обязательно) */
    'streamtalk' => [
        'driver' => 'local',
        'root' => storage_path('/streamtalk'),
        'url' => env('APP_URL').'/storage/streamtalk',
        'visibility' => 'public',
        'throw' => false,
    ],

Add custom block in file config/filesystems.php

    /* Пример кастомного диска (опционально) */
    'custom' => [
        'driver' => 'local',
        'root' => storage_path('/custom'),
        'url' => env('APP_URL').'/storage/custom',
        'visibility' => 'public',
        'throw' => false,
    ],