Маршруты на электричках по всей стране

Предисловие

Идея сделать этот проект у меня появилась, когда мы с моим другом примерно год назад решили поехать из Москвы в Иркутск на электричках. Только на электричках.

москва-иркутск маршрут

Я увидел, что ни один из популярных сервисов не предоставляет такой возможности. Поэтому я решил написать свой. Я надеялся собрать работающий прототип за вечер, но явно недооценил сложность проекта. Идея затянулась на месяц, к его концу я выгорел и забросил проект.

Графы, деньги, два API-эндпоинта

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

За неделю мы собрали прототип, который умел строить маршруты чуть хуже, чем средний пятилетний ребёнок умеет писать стихи:

первый прототип

Чтобы построить маршрут на расстояние дальше соседнего района, нужен был граф всей сети железных дорог. Для этого мы написали crawler API Яндекс Электричек, который построит этот граф. Проблема заключалась в том, что бесплатный уровень API Яндекса позволял делать 500 запросов в сутки. Нам требовалось около 35,000: ~3 запроса на ~11000 станций в базе Яндекса. Чтобы это решить, мы попросили наших товарищей зарегистрировать по API-ключу, за что им огромное спасибо.

Через несколько стрессовых часов и пару десятков мегабайт данных наш код построил вот такой граф: граф

UI прикольчики

Оставалось только написать алгоритм построения маршрута и сделать веб-страницу.

С алгоритмом происшествий не было, а первая версия дизайна сайта выглядела так: свинья

После небольших UI-доработок наш сайт был готов: финальная версия сайта