Разработка клиентского мобильного и веб-приложений для
расписания университета и не только
TSU.InTime
Что это такое?
TSU.InTime — это сервис для студентов и сотрудников Томского государственного университета. Он доступен в виде веб-сайта и мобильных приложений, предоставляя доступ к широкому спектру возможностей.
Задача
Решение
Создать систему, которая позволит просматривать расписания в любое время, в любой точке мира и на любом устройстве
Разработали три приложения — два мобильных и веб, объединяющие в себе множество возможностей. Например, отслеживание успеваемости, просмотр расписаний групп, преподавателей и аудиторий.
Подразделение
О ТГУ
ТГУ входит в топ-300 ведущих университетов мира по рейтингу QS, в Бриллиантовую лигу Round University Ranking
15 000
Студентов
21
Тут заголовок
TSU.InTime доступен в виде веб-сайта и мобильных приложений на Android и iOS, предоставляя доступ к широкому спектру возможностей.

Что внутри?
В веб-версия TSU.InTime пользователи могут легко просматривать расписания занятий, аудиторий, преподавателей и студентов, а также объединять несколько расписаний в одно общее.

Пользователи мобильного приложения могут добавлять расписание в избранное, экспортировать его в календарь, а также установить виджет на домашний экран мобильного устройства, чтобы посмотреть ближайшую пару, не открывая приложение. Это позволяет быстро получать доступ к наиболее важной информации.
Преподаватели и сотрудники университета имеют возможность бронировать аудитории для проведения занятий и мероприятий, что позволяет упростить организацию образовательного процесса.
Приложение интегрировано с сервисами ТГУ — «Личный кабинет студента» и «ТГУ.Сотрудники». Авторизовавшись в приложении при помощи своего ТГУ. Аккаунта, студент может просмотреть всю информацию о своем обучении: данные об образовании, предстоящие экзамены, успеваемость за каждый предмет, средний балл за все время обучения и за крайний семестр. Сотрудник же может просмотреть данные о своей должности и рабочей нагрузке.
Мобильное приложение TSU.InTime - это супперапп. В приложении представлены сервисы, такие как «Новости», «Календарь событий», «TSU.Helper», «Заказ справок» и многие другие, которые предоставляют доступ к продуктам и сервисам цифровой экосистемы ТГУ и делают процесс обучения и работы более организованным и эффективным.
Разработка
Мы столкнулись с уникальным вызовом: создать продукт, который был бы стильным, современным и привлекательным для молодежи, но в то же время интуитивно понятным и удобным для пользователей всех возрастов. Наша цель — сделать его удобным, простым, и в то же время впечатляющим.
frontend
Мы приняли решение использовать технологию ReactJS, потому что она обеспечивает модульность, гибкость и возможность переиспользования компонентов. В качестве языка программирования мы выбрали TypeScript. Для обращения к API мы используем RTK Query, а для стилизации — Styled Components. Локализация обеспечивается с помощью библиотеки i18n.

Вся наша работа над приложением была направлена на то, чтобы сделать его как можно более удобным и простым в использовании. Мы создали отдельную библиотеку компонентов, включающую в себя кнопки, заголовки, формы, календари и многое другое, чтобы обеспечить максимальную переиспользуемость и сделать проект еще более классным.
MOBILE
Мы используем Kotlin в качестве основного языка программирования для нашего android-приложения. Для реализации пользовательского интерфейса мы применяем Android View и Jetpack Compose. Для реализации асинхронного взаимодействия мы используем Kotlinx Coroutines, который обеспечивает эффективное управление многозадачностью и упрощает работу с асинхронными операциями. Для работы с локальной базой данных мы применяем библиотеку Room, она позволяет легко и безопасно взаимодействовать с данными, сохраняя их целостность и упрощая работу с SQL-запросами. Для реализации сетевого взаимодействия мы используем библиотеку Retrofit, которая позволяет легко взаимодействовать с API и получать данные с сервера.
Мы используем Swift в качестве основного языка программирования для разработки нашего ios-приложения.
Для создания пользовательского интерфейса мы используем фреймворк UIKit, который обеспечивает широкие возможности для разработки интерактивных и красивых пользовательских интерфейсов.
Для вёрстки интерфейса мы используем библиотеку SnapKit. С её помощью мы создаем констрейнты и размещаем объекты таким образом, чтобы обеспечить адаптивность вёрстки. Кроме того, для добавления анимаций, таких как загрузка в реальном времени, мы используем библиотеку Lottie.
Для работы с сетевым слоем нашего приложения мы используем библиотеку Alamofire. Она предоставляет возможности для выполнения сетевых запросов, их обработки и получения данных с сервера. Для эффективной обработки асинхронных операций и сохранения результатов мы используем библиотеку PromiseKit в связке с Alamofire.
Для аналитики приложения мы используем решение Firebase от Google — это позволяет нам хранить и анализировать различные данные, связанные с использованием приложения. Дополнительно для хранения аналитических данных мы используем библиотеку Amplitude.
Для безопасного хранения данных на устройстве пользователя мы используем KeyChain. Это более защищённое хранилище, где мы сохраняем ценные данные пользователя. UserDefaults также применяется в связке с KeyChain для хранения данных на устройстве.
BACKEND
Мы выбрали Kotlin в качестве языка программирования. Основным фреймворком разработки является Ktor Server, который предоставляет высокую производительность и гибкость при создании приложений. Для работы с базой данных мы используем PostgreSQL, а для объектно-реляционного отображения данных — библиотеку Exposed. Для взаимодействия с удаленными источниками данных применяется Ktor Client, обеспечивающий эффективное обращение к внешним API. Управление зависимостями в нашем проекте осуществляется с помощью DI-контейнера Koin — это облегчает поддержку и расширение приложения. Рассылка электронных писем осуществляется через сервис ТГУ с использованием Thymeleaf в качестве шаблонизатора. Для работы с удаленным хранилищем данных мы используем Yandex Cloud и библиотеку MinIO, обеспечивая надежное хранение и доступ к файлам. Для задач по расписанию мы применяем Quartz Scheduler.