Мониторинг ж/д билетов, совместные поездки и карта тишины
Какие проекты были на DevDays Fall’25
В ноябре в Институте прикладных компьютерных наук прошел традиционный учебный хакатон DevDays. Этой осенью в хакатоне участвовали почти 180 магистрантов пяти программ института, которые работали над 35 разными проектами. О нескольких проектах, которые могут заинтересовать студентов и абитуриентов ИТМО, мы расскажем в этом материале.
Сервис для организации совместных поездок для студентов ИТМО — ITMO. TRIP
Команда проекта:
  • Юрий Уфимцев
  • Артем Константинович Лысенко
  • Артем Русланович Лысенко
  • Тимур Хапчаев
  • Олег Позолотин
— все студенты первого курса магистратуры «Распределенные веб-сервисы».

Команда ITMO. TRIP представила сервис для студентов и сотрудников ИТМО, который помогает оптимизировать ежедневные маршруты и формирует комьюнити внутри университета. В отличие от шеринга такси, когда пассажиры хотят сэкономить на поездке, ключевая идея ITMO. TRIP — знакомство и нетворкинг людей из университетской среды. Они могут организовать совместную поездку на общественном транспорте, каршеринге, своей машине или такси, акцент сервиса сделан на безопасный поиск интересного попутчика. В будущем ITMO. TRIP может стать полноценной частью экосистемы ИТМО.
«Идея проекта пришла мне. В начале сентября мы с несколькими однокурсниками выяснили, что живем совсем рядом — в пределах одной станции метро. С тех пор совместные поездки превратились в традицию. Когда пришло время хакатона, я понял, что хочу распространить свой опыт на весь университет. Так и родился проект ITMO.TRIP.

ITMO.TRIP — это клиент на TypeScript и React, который отправляет запросы по REST API бэкенду, написанному на языке Kotlin (фреймворк Spring). В качестве базы данных мы использовали PostgreSQL.

Будучи студентами направления «Распределенные веб-сервисы», все мы — бэкенд-разработчики. Однако написания фронтенда было не избежать: одним из главных компонентов сервиса должна была стать лента поездок — пространство с объявлениями пользователей, содержащими краткое био, аватар и контакты автора, время, дату, способ передвижения и предлагаемый маршрут поездки, а также встроенную карту и другие визуальные элементы.

Особое внимание на фронтенде мы уделили интеграции с картами, ведь пользователям важно видеть точки поездки, иметь возможность развернуть маршрут в приложении карт, а также не страдать при вводе адресов. Сейчас адрес можно указать точкой на карте или ввести в произвольном формате — мы определим его, выполнив геокодинг.

При разработке бэкенда мы сконцентрировались на интеграции с ITMO ID. К сожалению, выяснилось, что для завершения интеграции необходим выделенный сервисный аккаунт, которого у нас пока нет. Поэтому для ввода логина и пароля мы предлагаем свою промежуточную форму, а не сразу перенаправляем на страницу ITMO ID. В будущем мы надеемся завершить интеграцию с ITMO ID и исправить этот недостаток. При этом мы уже сейчас гарантируем, что доступ к контенту сервиса получают только люди с учетной записью университета».
Юрий Уфимцев, PM проекта
Telegram-бот для мониторинга и бронирования билетов на поезд на сайте РЖД
Команда проекта:
  • Максим Кудрин — студент первого курса магистратуры «Программное обеспечение высоконагруженных систем»
  • Александр Третьяков — студент первого курса магистратуры «Программное обеспечение высоконагруженных систем»
  • Михаил Переверза — студент второго курса магистратуры «Руководитель IT-разработки»
  • Семен Дорошенко — студент второго курса магистратуры «Руководитель IT-разработки»

Билеты на поезда на популярные направления и даты часто раскупают еще в день старта продаж. Но спустя какое-то время к распроданным могут добавить новые вагоны, пассажиры делают возвраты, а компании аннулируют свои корпоративные брони. Чтобы не пропустить этот момент и купить нужный билет, можно воспользоваться Telegram-ботом @MonitorRZDBot.

Бот умеет искать подходящие билеты (фильтрует по городу отправления/прибытия, дате отправления, цене билета и типу вагона) и присылает уведомления о появлении нужных вариантов. Он может одновременно мониторить несколько направлений и дат. «Под капотом» сервис работает так: на облачном сервере запущен бот, у которого есть доступ к сообщениям @MonitorRZDBot в Telegram. Когда пользователь создает подписку на определенные фильтры (даты, направления и т. д.), они сохраняются в базу данных. Раз в несколько минут бот выбирает все фильтры и через API сайта РЖД проверяет, есть ли подходящие билеты. Когда билеты нашлись, пользователю приходит сообщение с подробной информацией и предложением забронировать их на сайте РЖД.
«На сайте РЖД есть специальный сервис для мониторинга билетов — лист ожидания. Я пробовал им пользоваться, но в моем случае он просто не работал. В итоге нужный билет я нашел и забронировал вручную. Наш бот работает, причем на 100% прозрачным способом — считаю, что в этом его главное преимущество перед решением сайта РЖД.

Мне очень понравилось участвовать в хакатоне. Классно, что всю эту неделю не было пар, и я почувствовал, что нагрузка меньше, чем в обычное учебное время. Это позволило отвлечься от рутины и сделать что-то интересное.

Конечно, во время работы мы столкнулись с рядом сложностей, главная из которых — бронирование билетов. Мы так и не смогли его реализовать. Стандартное решение подразумевает использование короткоживущих токенов с ограниченными правами, которые бы позволили боту действовать от имени пользователя. Но нам неизвестно, можно ли получить такие токены от РЖД и как. Поэтому мы решили просить у пользователя его куки от сайта и с ними пытаться забронировать билет. Сделать это через запросы в API не получилось — мы не смогли полностью воспроизвести нужную последовательность запросов с правильными заголовками для бронирования. Также мы пробовали эмулировать реального пользователя с роботом на Selenium, но использование роботов легко отследить, и сайт РЖД это блокировал. К сожалению, на дальнейший ресерч у нас уже не хватило времени в рамках хакатона».
Максим Кудрин, тимлид проекта
QuietMap / «Карта тишины»
Команда проекта:
  • Георгий Алексеев — студент первого курса магистратуры «Программное обеспечение высоконагруженных систем»
  • Сергей Шеремет — студент первого курса магистратуры «Инструменты разработки и анализа программ»
  • Богдан Мартынов — студент первого курса магистратуры «Разработка программного обеспечения»

QuietMap — это краудсорсинговая карта тихих пространств для работы и учебы — от кафе до библиотек и коворкингов. Пользователи оставляют свои отзывы и могут выбирать локации по уровню шума, наличию розеток, Wi-Fi, часам работы и другим важным для них критериям. Проект закрывает реальную боль студентов, фрилансеров и удаленных сотрудников, которым нужны комфортные условия для продуктивной работы.
«Над этим проектом мы работали втроем [в большинстве других команд было по пять человек — прим. ред.], и для нас это не было проблемой. Думаю, размер команды должен зависеть от задачи — насколько просто ее разделить на логические компоненты, — а наша тема хорошо билась на трех человек.

Идея проекта довольна проста: сервис хранит пользовательские метки и отображает их на карте. Самой большой сложностью стала реализация интерфейса, так как до хакатона все члены нашей команды были слабо знакомы с Web-разработкой".
Георгий Алексеев, тимлид проекта