Томский государственный университет
Образование, наука, работа
Россия, Томск
Корпоративный сайт, Порталы и сервисы, Промо-сайт
iOS, Android
Январь 2023
Университет обратился к нашим разработчикам с потребностью: современный сайт с расписанием и удобные мобильные версии. Но быстро стало ясно, что точечные решения не работают – студенты и сотрудники блуждают между разными сервисами, интерфейсы не едины, запуск каждой новой функции растягивается и дорожает. Требовалось не «подлатать», а переосмыслить точку входа в цифровую жизнь университета.
Мы подошли к задаче как к построению единой цифровой платформы, а не отдельного приложения. На базе первой версии приложений создали экосистему TSU.InTime, где все ключевые сервисы вуза доступны «из одного окна» на мобильных устройствах, а новые функции подключаются как миниприложения без перегрузки основной кодовой базы.
Что сделано:
– Мобильные приложения iOS/Android
Полный редизайн и развитие начального приложения: быстрый старт, «один-два тапа до результата», стабильная работа при нестабильном интернете за счёт локального кэша расписания и фоновой синхронизации. Поддержали push-уведомления об изменениях в расписании и других важных событиях. Реализовали единый визуальный язык с веб-версией и доступность для слабовидящих пользователей.
– Веб-версия и режим для интерактивных панелей
Создали веб-приложение с тёмной и светлой темами и адаптацией интерфейса для интерактивных панелей в кампусе: крупная типографика, автообновление, «киоск-режим», удалённое управление контентом.
– Платформа миниприложений
Разработали механизмы подключения миниприложений: витрина, публикация, версии, роли и модерация. Подготовили SDK и UI-гайдлайны, чтобы любой пользователь мог быстро опубликовать собственное миниприложение. Обеспечили изоляцию данных и разрешений между миниприложениями. Сверстали лендинг и документацию. Разработали панель администратора миниприложений для быстрой публикации.
– Профили и персонализация
Ввели персональные профили студентов и сотрудников с единым входом, ролями и доступом к релевантным сервисам.
– Интеграции и данные
Настроили надёжную двустороннюю синхронизацию с 1С:Университет: расписание, преподаватели, учебные планы. Сократили ручные операции, ускорили обновление данных, добавили мониторинг обмена и журналирование для быстрой диагностики.
– Административная панель
Создали панель администратора для управления бронированием аудиторий. Больше никаких служебных записок, преподаватель бронирует в "два клика" и получает подтверждение в кратчайшие сроки.
– Голосовой канал
Реализовали навык для Яндекс.Алисы: пользователи получают расписание по группе/преподавателю голосом - альтернативный, удобный канал доступа к данным.
Итог: TSU.InTime вырос из приложения про расписание в первую вузовскую платформу миниприложений в России – единое «окно» в цифровые сервисы ТГУ. Платформенный подход ускорил запуск новых функций, снизил стоимость сопровождения, дал пользователям предсказуемый опыт на всех устройствах и создал основу для дальнейшего масштабирования экосистемы.
Цель:
Дать студентам и сотрудникам быстрый и удобный доступ к актуальному расписанию на iOS, Android и в вебе, запустив решение с минимальными издержками по времени и ресурсам.
Что сделали:
• Нативные мобильные приложения (iOS и Android)
С нуля разработали два самостоятельных клиента: нативный iOS и нативный Android. Сфокусировались на ключевых сценариях – поиск и просмотр расписания по группе, преподавателю и аудитории, быстрые переходы между днями/неделями, избранные группы.
• Веб-сайт на React
Сделали лёгкое SPA с адаптивной версткой. В вебе пользователи быстро находят нужную группу/преподавателя и получают ту же логику представления, что и в мобильных версиях.
• Бэкенд на Kotlin + Ktor
Написали серверную часть на Kotlin, выбрали Ktor как компактный и быстрый фреймворк: это позволило оперативно реализовать REST API под мобильные и веб-клиенты и держать низкими требования к инфраструктуре.
• Интеграция с 1С через отдельный кэширующий слой на Go
Чтобы не нагружать 1С и ускорить ответы, реализовали сервис-прокладку на Go: он забирает данные из 1С, нормализует и кэширует их, а клиентам отдаёт уже подготовленные структуры. Это дало:
– стабильную работу при пиковых обращениях (начало семестра);
– контроль целостности данных;
– быстрые ответы API за счёт работы «из кэша».
• Дизайн и UX: как «распрямили» таблицы
Главный вызов – сделать удобным то, что по природе представляет собой «сплошные таблицы». Мы:
превратили строки таблиц в читаемые карточки занятий с акцентами на времени, аудитории и преподавателе;
добавили ленты дней/недель и «липкие» заголовки, чтобы пользователь всегда видел контекст;
ввели быстрые фильтры (сегодня/завтра/неделя) и подсветку текущей пары;
обеспечили одинаковые паттерны навигации в iOS, Android и вебе.
Результат – понятная структура без визуального шума и «семи кликов до пары».
Итог этапа:
Запустили три канала одновременно: нативные iOS- и Android-приложения и веб-сайт на React.
Добились быстрого отклика и предсказуемости за счёт Kotlin/Ktor на бэкенде и кэширующего слоя на Go между 1С и нашими API.
Решили сложную UX-задачу представления расписания без громоздкости.
Сформировали прочный технологический фундамент для следующих шагов: профилей, мини-приложений и дальнейшей платформенности (включая тёмную тему и расширенные сценарии в следующих релизах).
Цель:
Автоматизировать цикл бронирования аудиторий: дать преподавателям простой способ подать заявку из веб-клиента и обеспечить учебному управлению (УУ) удобный инструментарий для проверки конфликтов, согласования и публикации в расписании.
Что сделали:
• Возможность подачи заявки на веб-сайте
Быстрая заявка: дата/время, аудитория или тип аудитории, группа(ы), комментарий.
Подсказки занятости: при выборе слотов система сразу показывает доступные аудитории и предупреждения о пересечениях.
Статусы: «создано → на проверке → согласовано/отклонено».
Уведомления об изменениях статуса заявки присылаются на email преподавателя.
• Панель администратора для учебного управления
Рабочая очередь: заявки с приоритетами и фильтрами (корпус, аудитория, заявитель, период).
Согласование в один клик.
Публикация в расписание: одобренные заявки сразу отправляются в 1С.
Архитектура и качество
Фронтенд: React для панели и веб-клиента; единые UI-паттерны с публичным сайтом, акцент на скорость и читаемость.
Безопасность и роли: вход по учётной записи ТГУ, разграничение прав (преподаватель, модератор УУ, администратор), аудит действий.
Пользовательский опыт
Для преподавателя: «заявка за минуту» без звонков и писем; понятный статус и ожидаемое время решения.
Для учебного управления: меньше ручных сверок и телефонных согласований; всё, что нужно для решения – на одном экране.
Результат этапа
Закрыли «узкое место» согласований: заявки оформляются и обрабатываются в одной системе, без дублирования и рассинхронизации.
Сократили время цикла бронирования за счёт авто-проверок конфликтов и массовых операций.
Обеспечили корректную публикацию в расписание, сохранив целостность данных 1С.
Заложили основу для дальнейших сценариев (мероприятия кампуса, квотирование аудиторий, отчёты по загрузке помещений).
Данный этап превратил бронирование аудиторий из разрозненного процесса в управляемый продуктовый поток: прозрачно для преподавателей, предсказуемо для учебного управления и безопасно для академического расписания.
Цель:
Создать инфраструктуру для расширяемой экосистемы миниприложений, интегрированных в TSU.InTime, и превратить приложение в полнофункциональное суперприложение для университета. Включение миниприложений должно позволить легко добавлять новые сервисы и инструменты, а также улучшить взаимодействие с пользователем через персонализированные функции.
Что было сделано:
• Обновление мобильных приложений
Обновили мобильные версии приложения для iOS и Android, добавив поддержку WebView для отображения миниприложений, написанных на React.
Внедрили новые интерфейсы взаимодействия между мобильным слоем и миниприложением.
Обновили навигацию и взаимодействие, чтобы пользователь мог бесшовно переключаться между расписанием и миниприложениями, не выходя из среды супераппа.
• Платформа миниприложений
Конструктор миниприложений: Разработали панель администратора, где любой сотрудник или студент может создать миниприложение. Для этого есть два подхода:
Создание с нуля с использованием простого API и шаблонов.
Использование конструктора статичных страниц для быстрого прототипирования.
Настроили жизненный цикл миниприложений: публикация, модерация, обновления и удаление.
Модерация: добавили систему модерации, чтобы все миниприложения проходили проверку перед публикацией в основном приложении.
Роли администратора: внедрили разграничение ролей и доступов для различных пользователей, позволяя определённым сотрудникам и студентам создавать и управлять миниприложениями.
Реализовали сложный цикл автоматической публикации миниприложений, где каждое приложение проходило тестирование, проверку качества и автоматически публиковалось в системе без необходимости вмешательства команды разработчиков.
• Система разрешений
Разработали систему разрешений, которая позволяет пользователям предоставлять миниприложениям доступ к их личным данным (например, для автоматического заполнения форм).
Пользователь может одобрить или отклонить доступ к данным, обеспечивая контроль над личной информацией при взаимодействии с приложениями.
• Миниприложения
Разработали несколько миниприложений, чтобы продемонстрировать возможности платформы:
Новости университета: раздел с новыми анонсами, событиями и важными обновлениями.
Мероприятия: календари и информация о событиях, конференциях, лекциях и других активностях университета.
Справочник вуза: контактная информация, расположение корпусов, расписание работы библиотек и других ключевых служб.
Заказ справок: интеграция с внутренними сервисами для заказов академических справок, подтверждений и других официальных документов.
• UI-компоненты и документация
Разработали библиотеку UI-компонентов для миниприложений, включающую стандартные элементы интерфейса, такие как кнопки, таблицы, карточки и другие элементы, подходящие для быстрого создания адаптированных миниприложений.
Все компоненты и интерфейсы были опубликованы в npm для удобства распространения и использования другими разработчиками внутри университета.
Для простоты интеграции и использования миниприложений с TSU.InTime, разработали bridge, который позволяет миниприложениям взаимодействовать с основным супераппом: обмениваться данными, синхронизировать состояния и отправлять уведомления.
Весь процесс разработки и интеграции был документирован с помощью Docusaurus, создав удобную документацию для разработчиков, которые хотят создавать или адаптировать миниприложения для платформы TSU.InTime.
• Лендинг супераппа
Создали лендинг для презентации нового суперприложения, который включает описание возможностей, доступных миниприложений, а также инструкции по созданию новых приложений и получения доступа к API.
Результат этапа
Перевели TSU.InTime в суперапп: универсальная платформа для студентов и сотрудников с возможностью добавлять и использовать миниприложения, подходящая как для образовательных, так и для административных нужд.
Внедрили платформу для создания миниприложений, дающую университету возможность быстро разрабатывать и интегрировать новые цифровые сервисы без необходимости переписывать основную часть системы.
Создали прозрачную систему управления и публикации миниприложений, что обеспечило удобство как для пользователей, так и для разработчиков.
Упростили взаимодействие с данными пользователя через систему разрешений.
Опубликовали миниприложения: новости, мероприятия, справочник и заказ справок, что повысило удобство и улучшило пользовательский опыт в рамках экосистемы.
Этот этап стал ключевым моментом на пути к превращению TSU.InTime в полноценную платформу для цифровых сервисов университета, открыв возможности для быстрого добавления новых функций и улучшения взаимодействия с пользователем.
TSU.InTime из «приложения с расписанием» превратился в единую цифровую платформу университета – первый в России вузовский суперапп. Пользователи получают «один клик до результата», а университет — управляемую экосистему сервисов, которую можно расширять без переписывания ядра.
Ключевые метрики и подтверждения ценности:
• 5 000+ активных пользователей мобильных приложений ежедневно – устойчивый органический трафик без дорогостоящего промо.
• Рейтинг 4,8 в Google Play и 4,9 в App Store – высокое удовлетворение и доверие аудитории.
• Первый суперапп среди вузовских приложений в РФ – технологическое лидерство и заметная дифференциация.
Что это дало вузу и пользователям:
• Единая точка входа ко всем цифровым услугам: расписание, новости, мероприятия, справки и др.
• Быстрый вывод новых сервисов через платформу миниприложений: подразделения запускают решения сами – без длинных циклов согласований и релизов.
• Надёжность данных за счёт интеграций с 1С и кэширующего слоя: актуальные расписания и меньше ручных операций.
• Прозрачные процессы: админ-панель, модерация, роли, аудит действий – контроль качества на каждом шаге.
• Выше вовлечённость: push-уведомления, персонализация, удобный веб и мобильные клиенты; меньше звонков и писем «ради простого вопроса».
• Готовность к росту: архитектура и библиотека UI-компонентов, Bridge и документация в Docusaurus – платформа масштабируется и переиспользуется.
TSU.InTime – это не просто обновлённое приложение, это экосистема с измеримым пользовательским эффектом и зрелыми процессами внутри вуза. Мы создали основу, на которой можно быстро наращивать ценные сервисы, удерживая высокие оценки и ежедневную активность пользователей.
![]()
Данила Соколов
Генеральный директор (CEO)
Для нас TSU.InTime – не «ещё один проект», а часть команды и истории. Эта система стала настоящим челленджем: мы начинали с пустого экрана, спорили о том, как «распрямить» таблицы расписания, ночами ловили редкие баги синхронизации, изучали новое и шаг за шагом превращали идею в живую экосистему. Мы вырастили её с нуля, вложили в неё много тепла, внимания к деталям и профессионального упрямства. TSU.InTime рос вместе с нами: от первой нативной версии – к платформе миниприложений и супераппу. Мы благодарны коллегам из ТГУ за доверие, открытый диалог и совместные решения –именно так рождаются продукты, которыми хочется гордиться. И мы продолжаем развивать систему: слушаем пользователей, быстро доставляем улучшения, бережно относимся к стабильности и данным. Это не просто продукт, это наше «детище» – живой сервис, который помогает людям каждый день. Мы рядом: поддерживаем, совершенствуем, накапливаем экспертизу и делимся ей, чтобы каждая следующая версия была лучше предыдущей.