Техническое задание: PWA приложение для видеозвонков

Необходимо создать Progressive Web Application (PWA) на основе React и TypeScript для мобильного использования. Приложение должно поддерживать видеозвонки (WebRTC), текстовый чат, таймер баланса, систему подарков и push-уведомления.

Основные требования к функционалу

1. Видеозвонки и чат

  • Реализация WebRTC для peer-to-peer видеозвонков на устройствах iOS/Android (в вебе).
  • Low-latency видео трансляция с оптимизацией под разные браузеры.
  • Текстовый чат реального времени с отображением истории и статуса.
  • Управление микрофоном и камерой, возможность переключения между передней/задней камерой.

2. Интерфейс и опыт

  • Mobile-first макет: все экраны адаптированы под мобильные устройства и десктоп (responsive дизайн).
  • Страницы: лендинг, профили пользователей (настройки и статистика), гостевой режим (вход без регистрации), админ-панель (управление пользователями и балансом).
  • Таймер баланса: отслеживание времени, потраченного на платные звонки, с визуальным индикатором и предупреждениями.

3. Система подарков и уведомлений

  • Возможность отправлять платные или бесплатные подарки через интерфейс с привязанными фантиками/множителями.
  • Push-уведомления (Web Push API) для событий: входящий звонок, сообщение или подарок, баланс на нуле.

4. Технические аспекты

  • Интеграция WebSockets для обмена сигналами WebRTC и синхронизации чата.
  • Оптимизация видео: адаптивный битрейт, поддержка кодека VP8/VP9/H264 на iOS и Android в стандартных пользователях Safari и Chrome.
  • PWA метаданные (манифест, service worker для кеширования) с возможностью ‘установки’ на домашний экран телефонов.
  • Работа с устройствами (камера/микрофон) - обработка временной блокировки и запросов разрешений на iOS.

Целевая аудитория

  • Организации, нуждающиеся в простых видеозвонках без регистрации или с упрощённой административкой.
  • Пользователи со слабым интернетом - требует low-latency потоковая передача.
  • Система работает полностью в PWA, без нативных фреймворков, используя только сертификат HTTPS.