Что такое JUVOSpark
JUVOSpark — это EdTech-платформа, в которой образовательный сценарий для ученика живёт в Telegram, а операционка преподавателя и владельца платформы — в веб-админке на защищённом Admin API.
Платформа закрывает не одну «фичу бота», а связку процессов: тестирование, расписание, домашние задания, учёт оплат, напоминания, поддержку и контролируемое масштабирование на преподавателей.
Ключевой продуктовый принцип простой и жёсткий:
Один общий бот — единая точка входа. Разделение по преподавателям делается через invite и deeplink, а не через отдельных ботов.
Почему «ещё один Telegram-бот» — слабая постановка задачи
Когда команда говорит «нужен бот для обучения», обычно имеют в виду меню, пару сценариев и рассылку. На практике EdTech-продукт очень быстро упирается в операционные вопросы:
- где ученик проходит тесты и видит результат;
- где смотрит расписание и ссылку на урок;
- как получает домашку после занятия;
- как ему мягко напомнить об оплате;
- куда писать в поддержку, если что-то пошло не так;
- как владелец платформы подключает новых преподавателей, не открывая публичную регистрацию;
- как не смешать данные разных преподавателей в одном канале.
Если эти вопросы не заложены в архитектуру с первого дня, продукт либо остаётся «демо-ботом», либо начинает обрастать костылями: отдельные боты на каждого преподавателя, ручные таблицы, чаты без статусов, доступы «всем подряд».
Именно поэтому JUVOSpark проектировался не как чат-виджет, а как платформа с ясной моделью входа, ролей и изоляции.

Самая распространённая ошибка в Telegram-EdTech
Самая частая ошибка — масштабировать продукт копированием ботов.
Новый преподаватель — новый бот.
Новая группа — ещё один токен.
Новый бренд внутри сети — ещё один инстанс.
Через несколько месяцев уже сложно уверенно ответить:
- сколько ботов реально в production;
- где единый UX и единые тексты;
- как обновлять логику сразу для всех;
- кто владеет каким контуром данных;
- как безопасно выдать доступ новому преподавателю;
- что делать, если ученик переходит к другому преподавателю.
Типичные anti-patterns, которые мы сознательно исключили:
- отдельный бот на каждого teacher;
- открытая self-registration в админку;
- общая «каша» контента без tenant-изоляции;
- teacher-функции прямо в student-боте без чёткой границы UX;
- оплаты через эквайринг в v1 «потому что так солиднее», хотя операционная боль была в учёте и напоминаниях.
Отсутствие ответов на эти вопросы превращает рост в хаос сопровождения. Поэтому в JUVOSpark выбран другой путь: один бот, invite-only рост, изоляция данных.
Какую задачу решали
Нужна была EdTech-платформа, где:
- ученик получает обучение и сервис в одном привычном канале — Telegram;
- преподаватель и владелец платформы управляют контентом и операциями из веб-админки;
- подключение новых преподавателей идёт контролируемо, без публичной регистрации;
- ученики разных преподавателей не видят чужой контент и чужие данные;
- инфраструктура остаётся простой: один bot-process, один Admin API, предсказуемый деплой.
Цель v1 — не «закрыть все EdTech-мечты», а собрать устойчивый контур: образование + операции + масштабирование на teachers.
Архитектурное решение: single bot + invites
Единая точка входа
Ученик всегда заходит в один и тот же бот платформы. Это единый бренд-канал, единый UX и единая точка обновлений.
Есть два сценария входа:
- Общая ссылка на бота. Пользователь стартует без персонального токена и попадает в систему как lead. Владелец платформы может позже вручную привязать его к конкретному преподавателю.
- Персональный deeplink преподавателя. Ученик открывает ссылку вида «бот + start-параметр с токеном teacher». Бот привязывает ученика к этому преподавателю, и дальше студент видит только его тесты, расписание, домашки и контакты.
Invite-only для преподавателей
Преподаватель не регистрируется в админке сам. Доступ выдаёт owner:
- Owner назначает роль Teacher.
- Генерируется одноразовый invite в веб-админку (с TTL, возможностью отозвать и перевыпустить).
- Teacher активирует доступ (email + пароль).
- В админке получает персональную Bot Invite ссылку для учеников.
- Может скопировать ссылку, перевыпустить токен или деактивировать его.
Так платформа растёт без open signup и без антиспам-слоя «на всём интернете», сохраняя контроль owner над тем, кто вообще получает рабочее пространство.
Изоляция и роли
В модели v1 есть три ключевых роли:
- Owner — управление платформой, преподавателями, переносами учеников, мониторингом.
- Teacher — своё пространство: ученики, тесты, уроки, домашки, оплаты, настройки, bot invite.
- Student / lead — сценарий в Telegram.
Важное UX-правило: если пользователь одновременно teacher и student, в боте он всегда видит student-flow. Управление для преподавателя живёт в веб-админке. Это снижает путаницу и не превращает Telegram в «вторую админку».

Что видит ученик в боте
Образовательный контур в Telegram собран как цельный сценарий, а не набор разрозненных команд.
После /start ученик получает меню:
- Tests — выбор уровня (их создает сам Учитель в своиз настройках), прохождение теста с таймером и без, варианты ответа и текстовый ввод, мультимедиа-вопросы (аудио, видео, изображения), фидбек и итог с возможностью пересдачи;
- Schedule — ближайшие уроки на месяц, время, тип, заметки, ссылка на площадку;
- Homework — домашки, которые становятся доступны после урока; карточка задания и статус выполнения;
- Contacts — контакты и материалы, которыми управляют из админки;
- любой свободный текст — уходит в поддержку.
То есть Telegram здесь не «витрина», а рабочий канал обучения и сервиса.

Какие настройки и операции доступны через бота
Отдельный слой платформы — операционные сценарии прямо в Telegram для платформенного администратора.
В Admin Panel бота доступны:
- Statistics — сводка по пользователям и активности;
- Broadcast — массовые сообщения с ограничением частоты отправки и итоговым отчётом;
- Metrics — операционные метрики сервиса;
- Support — очередь обращений, фильтры answered / unanswered, ответ ученику не выходя из Telegram;
- User Interface — просмотр student-интерфейса «глазами пользователя».
Дополнительно в фоне работают ежедневные напоминания об оплатах и уроках. Это важно: платформа не только отвечает на действия пользователя, но и сама поддерживает ритм обучения и оплаты.
Именно этот слой делает бота не демо-меню, а управляемым каналом продукта.
Что закрывает веб-админка
Параллельно с ботом работает веб-админка на JWT-защищённом REST API. Один backend обслуживает и Telegram long polling, и HTTP API — без рассинхрона доменной логики.
Из админки управляются:
- тесты, вопросы, уровни, медиа для заданий;
- студенты, попытки, экспорт результатов;
- уроки и площадки для встреч;
- домашние задания и текст приветствия раздела Homework в боте;
- оплаты как CRM-учёт: статусы, сумма, валюта, персональные напоминания (без платёжного шлюза в v1);
- контакты для раздела Contacts в боте;
- чат поддержки и уведомления о событиях;
- аналитика и dashboard;
- teacher onboarding и Bot Invite;
- owner-операции: список преподавателей, ручная привязка lead, перенос ученика между teachers, обзор активности.
Google Calendar подключается через OAuth как интеграция календаря преподавателя; полный двусторонний sync выносился поэтапно, чтобы не блокировать основной контур.

Инженерные решения, которые держат систему
Проект строился по Clean Architecture: домен не зависит от Telegram и HTTP, а инфраструктура подключается через интерфейсы. Это позволило развивать бот и админку параллельно на одном ядре.
Для Telegram-нагрузки важны:
- worker pool на обработку updates;
- rate limiting на исходящие сообщения;
- state manager для conversational-сценариев (тесты, broadcast, support reply);
- graceful shutdown.
Для доступа в админку — JWT с ролевой моделью owner/teacher.
Для данных — SQLite с предсказуемой схемой под education-domain и invite/binding.
Для поставки — Docker, reverse proxy, CI-образы, контролируемые обновления.
Это не «оверинжиниринг ради красоты». Это минимальный набор практик, без которых multi-teacher EdTech на одном боте быстро становится хрупким.
Реальный продуктовый кейс: от сценария к платформе
Исходная точка проекта была уже не blank page: был живой Telegram-контур и инженерная база. Задача состояла в том, чтобы вырастить из него полноценный EdTech-продукт с понятной моделью масштабирования.
Что сделали по сути:
- Зафиксировали education-domain как основу продукта.
- Собрали student-сценарий в одном боте: тесты, расписание, домашки, контакты, поддержка.
- Вынесли операционку преподавателя в веб-админку на том же backend.
- Добавили invite-only onboarding преподавателей и персональные deeplink для учеников.
- Ввели изоляцию tenant-данных и owner-инструменты переназначения.
- Довели delivery до production-контура: контейнеры, API, фоновые jobs, админка.
Перед каждым архитектурным решением проверяли один критерий: усложняет ли это сопровождение при росте числа преподавателей. Если да — искали модель проще. Так и появился принцип «один бот + invites», а не «бот на каждого».

Почему нельзя было «просто наплодить ботов»
Самое опасное решение в такой задаче — ускориться за счёт копирования инстансов.
Отдельный бот на преподавателя выглядит быстро только в первую неделю. Дальше растут:
- стоимость сопровождения;
- риск расхождения версий логики;
- сложность общих обновлений;
- хаос в доступах и секретах;
- невозможность аккуратно переносить учеников между преподавателями.
Безопасный путь масштабирования, который мы заложили:
- Оставить один bot entrypoint.
- Развести роли owner / teacher / student.
- Выдавать teacher-доступ только через invite.
- Привязывать учеников через deeplink или ручной bind owner.
- Изолировать данные tenant’а.
- Дать owner инструменты reassignment и мониторинга.
- Teacher-управление держать в web, student-опыт — в Telegram.
Именно такая последовательность делает рост обратимым и контролируемым. Формулировка «поднимем ещё одного бота» в зрелом EdTech обычно означает будущий операционный долг.
Что получает продукт и бизнес
Такой подход даёт сразу несколько эффектов:
- единый канал для ученика без прыжков между инструментами;
- управляемая операционка для преподавателей и owner;
- контролируемый рост числа teachers без open registration;
- меньше инфраструктуры на старте масштабирования;
- понятная граница ответственности между Telegram UX и web CRM;
- база для аналитики, напоминаний и поддержки в одном контуре.
Для портфолио и для заказчика здесь важен не список кнопок, а то, что платформа умеет расти, не разваливаясь на набор чатов.
Заключение
Сильный Telegram-EdTech начинается не с меню кнопок, а с модели входа и роста. Если сразу заложить «отдельный бот на каждого», продукт ускорится на неделю и замедлится на годы сопровождения.
JUVOSpark построен иначе: один общий бот как единая точка входа, invite-only подключение преподавателей, персональные deeplink для учеников, изоляция данных и веб-админка для операционки. Поверх этого — полноценный образовательный сценарий: тесты, расписание, домашки, напоминания и поддержка.
Такой дизайн делает платформу понятной для ученика, управляемой для преподавателя и масштабируемой для владельца — без зоопарка ботов и без хаотичной публичной регистрации.
Следующий шаг
Если нужен EdTech-контур в Telegram с контролируемым multi-teacher ростом, начинать стоит не с копирования ботов, а с карты ролей, точки входа и правил привязки учеников.
Дальше — домен обучения, admin API и только потом интеграции и платёжный шлюз.