Клиентский портал
Брендированный портал для клиентов: утверждение видео, чат с командой, заявки и отслеживание проектов.
Обзор портала
Что такое Клиентский портал?
Клиентский портал — отдельный брендированный интерфейс, изолированный от вашего рабочего пространства. Клиенты видят только назначенные им проекты и видео, общаются с командой через встроенный чат и утверждают материалы — без доступа к внутренним данным студии.
Портал работает на отдельном домене или субдомене вашей студии и использует собственную систему аутентификации, не связанную с основными аккаунтами Basalt.
Ключевые возможности
- Дашборд — статистика проектов, диаграмма Ганта, ближайшие дедлайны и видео на утверждении
- Проекты и видео — просмотр назначенных проектов, видео-карточки с превью из S3, Яндекс.Диска и Google Drive
- Утверждение — утверждение видео или запрос правок с комментариями, прогресс-бар утверждения
- Чат — общение с командой в реальном времени по каждому проекту
- Заявки — подача заявок на новые проекты, обсуждение деталей, отслеживание статуса
- Уведомления — Telegram-уведомления о новых видео, изменении статусов и дедлайнах
- Мульти-студио — один клиент может работать с несколькими студиями через единый аккаунт
Дизайн «Digital Noir»
Портал использует уникальную тёмную тему «Digital Noir» — чисто чёрный фон, эффекты стекла (glassmorphism), фиолетовые акценты и анимации. Визуально портал полностью отличается от основного интерфейса Basalt.
Студии на тарифах с брендингом могут настроить основной и акцентный цвета, загрузить логотип и указать название — клиенты увидят ваш бренд вместо Basalt.
Настройка и брендинг
Создание клиентов
Клиенты создаются в разделе Студия → Клиенты. При создании укажите:
- Имя — отображаемое имя клиента
- Telegram ID или Email — в зависимости от метода аутентификации, настроенного для вашей студии
- Телефон (опционально) — для контактной информации
Каждый клиент получает уникальный идентификатор (UUID), который можно использовать для генерации персональной ссылки входа.
Клиента также можно создать автоматически из шаблона контакта — при этом ему сразу назначаются все проекты, связанные с этим контактом.
Назначение проектов
Клиент видит только те проекты, которые ему назначены. Назначение и отмена доступны на странице клиента:
- Перейдите в Студия → Клиенты
- Выберите клиента
- Нажмите Назначить проект и выберите из списка
Один проект можно назначить нескольким клиентам. Клиент увидит проект в портале сразу после назначения.
Отправка видео на ревью
Чтобы клиент увидел видео в портале, его нужно явно отправить на ревью:
- Откройте проект в основном интерфейсе
- Перейдите в файлы проекта
- Выберите видеофайл и нажмите Отправить на ревью
При отправке автоматически создаётся публичная ссылка для просмотра и запись об ожидании утверждения. Если у клиента подключён Telegram, он получит уведомление о новом видео.
Кастомный брендинг
На тарифах с поддержкой брендинга (has_portal_branding) вы можете настроить внешний вид портала:
| Параметр | Описание |
|---|---|
| Основной цвет | Применяется к кнопкам, ссылкам и акцентным элементам портала |
| Акцентный цвет | Дополнительный цвет для второстепенных элементов |
| Название студии | Отображается в шапке портала вместо «Basalt» |
| Логотип | Показывается в шапке и на странице входа |
На тарифах с white-label дополнительно скрывается надпись «Powered by Basalt» — клиенты видят только ваш бренд.
Субдомены
Каждая студия может использовать свой субдомен для портала:
mystudio.basaltpms.com— субдомен автоматически направляет на портал вашей студии- Клиенту не нужно выбирать студию — он попадает сразу в нужное место
Субдомен определяется по slug компании. Настройте его в Настройки → Компания → Slug.
Вход клиентов
Методы авторизации
Портал поддерживает четыре метода входа. Каждая студия выбирает один основной метод в настройках.
| Метод | Как работает | Когда использовать |
|---|---|---|
| Персональная ссылка | Уникальный URL с UUID клиента — вход в один клик | Минимум трения: отправьте ссылку в мессенджер, и клиент сразу попадает в портал |
| Telegram | Telegram Login Widget или верификация через бота | Клиенты уже общаются с вами в Telegram |
| Magic link или 8-значный OTP-код на email | Формальные клиенты, предпочитающие email | |
| Hub-вход | Telegram или Email на корневом домене, без привязки к студии | Клиенты, работающие с несколькими студиями |
Персональная ссылка
Самый простой способ входа. Каждый клиент имеет уникальный UUID. Сформируйте ссылку вида:
https://yourcompany.basaltpms.com/portal/login?client=UUID
При переходе клиент авторизуется мгновенно без дополнительных шагов. Ссылку можно отправить в любой мессенджер или email. Доступ защищён лимитом запросов — 5 попыток в минуту с одного IP.
Вход через Telegram
Два варианта Telegram-авторизации:
Telegram Login Widget — кнопка «Войти через Telegram» на странице входа. Клиент подтверждает авторизацию в Telegram, сервер проверяет HMAC-подпись и находит клиента по Telegram ID.
Верификация через бота — клиент получает deep-link для Telegram-бота, нажимает «Начать» — бот подтверждает личность. Код действует 10 минут. Портал проверяет статус каждые несколько секунд и завершает вход автоматически.
Вход через Email
Клиент вводит email на странице входа. На почту приходит:
- Magic link — кликабельная ссылка для входа в один клик (действует 10 минут)
- OTP-код — 8-значный код, который можно ввести вручную на странице входа
Оба варианта работают параллельно — клиент использует тот, что удобнее. Количество запросов ограничено для защиты от спама.
Безопасность сессий
Портал использует собственную систему JWT-токенов, отделённую от основных аккаунтов Basalt:
- Токен сессии — httpOnly cookie, действует 2 часа, содержит привязку к клиенту и студии
- Refresh-токен — автоматически обновляет сессию на протяжении 7 дней
- Защита от повторного использования — при обнаружении повторного использования отозванного refresh-токена все сессии аккаунта немедленно аннулируются
Персональные данные клиентов (имя, email, Telegram ID, телефон) хранятся в зашифрованном виде с использованием конвертного шифрования.
Дашборд и проекты
Главная страница
После входа клиент попадает на дашборд с персонализированным приветствием и обзором всех назначенных проектов.
Карточки статистики:
- Ожидает утверждения — количество видео, требующих решения
- В работе — проекты в активном статусе
- Всего проектов — общее число назначенных проектов
- Утверждено — количество утверждённых видео
Быстрые действия — ссылки на раздел заявок и проектов для быстрой навигации.
Диаграмма Ганта
На дашборде отображается интерактивная диаграмма Ганта со всеми назначенными проектами. Возможности:
- Масштабирование: переключение между видом по неделям и месяцам
- Горизонтальная прокрутка по временной шкале
- Цветовая кодировка по статусу проекта
- Маркеры дедлайнов
- Всплывающие подсказки со статистикой утверждений
Bento-сетка
Под статистикой располагается bento-сетка с двумя карточками:
- Ближайшие дедлайны — проекты, отсортированные по срочности
- Видео на утверждении — последние видео, ожидающие решения клиента
Список проектов
Раздел Проекты отображает все назначенные проекты, разделённые на две группы:
- В работе — активные проекты (вверху списка)
- Остальные проекты — завершённые и архивные, отсортированные по дедлайну
Для каждого проекта показывается название, статус-бейдж и дедлайн. В шапке — общее количество проектов и число активных.
Страница проекта
При клике на проект открывается детальная страница с:
- Карточка проекта — название, статус, описание, дедлайн
- Шкала прогресса — визуальная полоса от даты создания до дедлайна
- Прогресс утверждения — сегментированная полоса: утверждено / на правках / ожидает
- Фильтры видео — вкладки: Все, Ожидает, Утверждено, На правках
- Сетка видео — masonry-раскладка видео-карточек
- Чат — боковая панель (десктоп) или плавающая кнопка (мобильные)
- Лента активности — хронология событий проекта
Просмотр и утверждение
Видео-карточки
Каждое видео, отправленное на ревью, отображается как карточка в masonry-сетке. Карточка содержит:
- Превью — миниатюра из S3, Яндекс.Диска или Google Drive (или заглушка, если превью недоступно)
- Название и размер файла
- Кнопка воспроизведения — открывает видео по публичной ссылке в новой вкладке
- Бейдж статуса — в правом верхнем углу: ожидает, утверждено или на правках
Утверждение видео
Для видео со статусом «Ожидает» доступны две кнопки:
- Утвердить (зелёная галочка) — видео получает статус «Утверждено» с датой утверждения
- Запросить правки (крестик) — открывает модальное окно для ввода комментария к правкам
После утверждения или запроса правок бейдж карточки обновляется мгновенно. Команда студии видит результат в своём интерфейсе.
Запрос правок
При запросе правок открывается модальное окно, где клиент описывает, что нужно изменить. Комментарий к правкам отображается на карточке видео — команда видит его в разделе утверждений проекта.
Студия может доработать видео и повторно отправить его на ревью — карточка снова перейдёт в статус «Ожидает».
Прогресс-бар утверждения
На странице проекта отображается сегментированный прогресс-бар, показывающий состояние всех видео:
- Зелёный — утверждённые видео
- Жёлтый — на правках
- Серый — ожидают решения
Полоса заполняется анимированно, давая клиенту наглядное представление о прогрессе проекта.
Лента активности
В боковой панели проекта отображается хронологическая лента событий:
sent_for_review— видео отправлено на ревьюvideo_approved— видео утверждено клиентомrevision_requested— клиент запросил правки
На дашборде также доступна общая лента последних 15 событий по всем проектам.
Чат и заявки
Чат с командой
Каждый проект имеет собственный чат для общения между клиентом и командой студии. Чат работает в реальном времени через Supabase Realtime.
Интерфейс:
- На десктопе — сворачиваемая боковая панель
- На мобильных — плавающая кнопка (FAB) с бейджем непрочитанных
Возможности чата
- Отправка и получение сообщений в реальном времени
- Редактирование своих сообщений (наведение на десктопе, долгое нажатие на мобильных)
- Удаление своих сообщений
- Разделители по датам (Сегодня / Вчера / дата)
- Автопрокрутка к новым сообщениям
- Отметка сообщений как прочитанных при открытии панели
- Счётчик непрочитанных — обновляется каждые 30 секунд и при фокусе окна
Заявки на проекты
Клиенты могут подавать заявки на новые проекты через раздел Заявки в портале. При создании заявки указывается:
- Название и описание проекта
- Желаемый дедлайн
- Количество видео
- Бюджет (опционально)
- Ссылки на референсы (опционально)
Статусы заявок
Каждая заявка проходит через статусы:
| Статус | Описание |
|---|---|
| Ожидает | Заявка отправлена, ждёт рассмотрения |
| На рассмотрении | Студия взяла заявку в работу |
| Одобрена | Студия приняла заявку |
| Отклонена | Заявка отклонена с указанием причины |
| Конвертирована | Заявка превращена в реальный проект |
Клиент может фильтровать заявки по статусу. На странице каждой заявки доступна ветка комментариев для обсуждения деталей со студией.
Страница заявки
Детальная страница заявки показывает всю информацию: название, описание, статус, приоритет, дедлайн, количество видео, бюджет и ссылки на референсы. Дополнительно:
- Имя рецензента и дата рассмотрения (если заявка обработана)
- Причина отказа (если заявка отклонена)
- Ссылка на проект (если заявка конвертирована)
- Ветка комментариев для переписки между клиентом и студией
Настройки клиента
Клиент может добавить или изменить свой email-адрес в настройках портала. Email используется для:
- Входа через magic link / OTP
- Получения уведомлений
- Идентификации при работе с несколькими студиями
При добавлении email проверяется его уникальность в рамках студии.
Привязка Telegram
В настройках клиент может привязать или отвязать Telegram-аккаунт. Привязка происходит через Telegram-бота:
- Клиент нажимает Привязать Telegram
- Генерируется deep-link для Telegram-бота
- Клиент открывает ссылку и нажимает «Начать» в боте
- Портал автоматически проверяет статус каждые 3 секунды
- После подтверждения Telegram привязывается к аккаунту
Отвязать Telegram можно только если у клиента указан email — должен оставаться хотя бы один способ входа.
Уведомления
Для получения уведомлений необходим подключённый Telegram. Доступные типы уведомлений:
| Тип | Описание |
|---|---|
| Видео на ревью | Студия отправила видео на утверждение |
| Смена статуса проекта | Статус проекта изменился |
| Напоминание о дедлайне | Приближается дедлайн проекта |
Каждый тип можно включить или отключить отдельно. По умолчанию все уведомления включены. Кнопка Отправить тестовое уведомление позволяет проверить работу.
Мульти-студио
Если клиент работает с несколькими студиями на Basalt, он получает единый аккаунт (Portal Account), объединяющий все его клиентские записи.
Как это работает:
- При входе через корневой домен (без субдомена) система находит все студии клиента
- Если студия одна — клиент попадает в неё автоматически
- Если студий несколько — открывается Hub — страница выбора студии
- На Hub-странице каждая студия отображается как карточка с логотипом, названием, цветом и количеством проектов
- Клиент может переключаться между студиями через Настройки → Сменить студию