Мост, реверс и 40 минут кода в ванной: как получился сервис для водителей Омска
Все знают, что покинуть Омск невозможно. Не все знают, что в последнее время даже просто перебраться через реку внутри города стало тем ещё испытанием.
Мост, который сломался
Мост 60-летия ВЛКСМ - одна из главных переправ через Иртыш - сейчас на генеральной реконструкции. Половина перекрыта. На оставшейся части - три полосы: две фиксированные, в разных направлениях, и одна реверсивная, которая переключается между левым и правым берегом в зависимости от времени суток.
Так было не всегда. Сначала реверсивной полосы вообще не было - просто две полосы в одну сторону и одна в другую, без вариантов. Люди закономерно начали грустить в пробках и просить про внедрение реверса. Администрация героически отстаивала бюджеты, но по итогу сдалась и поставила светофоры реверса.
Легче стало не сразу. Время переключения подобрали не очень удачно, потом несколько раз меняли - запоминать расписание стало занятием бессмысленным, оно устаревало быстрее, чем откладывалось в голове. Единственный официальный источник - билборд перед мостом с каждой стороны, и весь способ узнать актуальное время сводился к тому, чтобы заранее его сфотографировать. Еще новостные паблики его публиковали, не сайт администрации, а паблики, интересно же? Листать телефон за рулём перед самым въездом на мост, пытаясь разглядеть цифры на старой фотке, - то ещё занятие, и откровенно небезопасное.
При этом даже разобравшись с приоритетом, вопрос был не закрыт. На мосту стабильно нервно: аварии частые, водители на нём почему-то особенно на взводе, доходило и до стрельбы, если кому-то что-то не понравилось на дороге. Два зелёных сигнала с обеих сторон совершенно не гарантируют, что проезд будет свободным, - это скорее теоретическая возможность, чем факт. Поэтому кроме расписания приоритета нужно было отдельно открывать карты и смотреть пробки - ещё одно лишнее действие и ещё одна вкладка/приложение.
Я ездил через этот мост каждый день, по несколько раз. И вот эта комбинация - искать фотку билборда, держать в голове время следующего переключения, параллельно проверять пробки в отдельном приложении, - со временем начала подбешивать вполне ощутимо. В какой-то момент подумал: сколько можно, давайте я просто соберу всё на одном экране.
Решение и 40 минут в ванной
Была идея сделать нативное приложение под iOS, заодно и под Apple Watch - я сам ими пользуюсь, было бы прикольно. Но dev-аккаунт разработчика Apple - штука с подпиской, а не разовой покупкой, и тратить деньги ради одной локальной задачи было откровенно жалко.
В это же время я как раз обдумывал разработку своего SaaS Favy для лояльности и присматривался к PWA как к формату. Так что выбор фактически сделался сам: PWA работает везде, независимо от платформы, а чуть позже, когда внедрили белые списки и выключили интернет по всему городу, я внедрил еще и офлайн-режим. Сейчас приложение достаточно открыть с интернетом примерно раз в неделю, просто чтобы подтянуть изменения расписания, если они были, - и дальше можно вообще не думать о сети.
MVP я написал за 40 минут - пока дочь купалась и играла с игрушками в ванной, а я сидел рядом с ноутбуком, одним глазом присматривая, чтобы она не нахлебалась воды, другим - смотрел в код и документацию по PWA. Формат работы, прямо скажем, не самый удобный, но результат получился рабочий, и в целом грех жаловаться.
Дальше появился ещё и Telegram Mini App - часть людей не готова ставить отдельные приложения, но открыть бота в мессенджере привычно для всех. Одна логика - и работает и в браузере, и в Telegram. Остальное дорабатывалось по необходимости: что-то по делу, что-то просто потому, что пришла идея и показалась прикольной. После блокировки он стал менее актуальным, но всё еще люди пользуюся. Думал добавить в мессенджер "скам"... Но с их политикой создания ботов/mini apps:
Бан в чате и тишина администрации
Рекламу я не запускал - даже мысли такой не было. Кинул ссылку в чат своего микрорайона - и меня там забанили. Формулировка была отдельным произведением: я, судя по всему, пытаюсь украсть у людей госуслуги, а сам ресурс никак «не согласован с мэром». До сих пор хочется спросить у местных чат-админов: вы и в туалет ходите по согласованию с мэром?
Дальше разошлось спокойнее - раскидал семье, друзьям, они дальше своим знакомым и коллегам на работе. Так набежало 600–1000 уникальных пользователей в месяц, причём иногда заходят даже из других городов - как они вообще узнали про локальный сервис для одного конкретного моста, для меня секрет. Это только те, кто заходит > 1 раза.
После истории с баном решил, что раз получилось рабочее и нужное решение, логичнее просто отдать его администрации - бесплатно и безвозмездно, сами обновляйте расписание, я помогу с технической стороной. Написал пару писем. В ответ - тишина. Позвонил на телефон - сказали, что вся нужная информация и так есть, на билборде у моста, по одному с каждой стороны, этого людям более чем достаточно, пользуйтесь на здоровье. А все ваши интернеты нам и не нужны вообще, не зря же его отключили по всему городу.
Отдельный привет администрации города Омска - кто бы у вас ни отвечал за такие вопросы, кажется, есть над чем поработать. Да и найти ваши контакты, по которым возможно получить ответ - та еще затея.
На практике
Личное раздражение от повторяющейся мелкой проблемы работает как источник идеи для небольшого продукта лучше любого брейншторма - если что-то бесит тебя каждый день, есть шанс, что бесит и всех остальных, кто проезжает через то же самое.
Не обязательно ждать отдельного блока свободного времени, чтобы начать. MVP вполне собирается за 40 минут где угодно, хоть рядом с ванной, - было бы желание.
И выбор простого стека почти всегда себя оправдывает: PWA без нативных приложений, без App Store, без подписок разработчику - решение получилось рабочим, дешёвым и не требующим почти никакой поддержки, кроме как обновить расписание при изменении.
Домен отдельный не покупал, использовал то, что было под рукой. Раньше хостил на cloudflare pages (очень удобно и, что самое важное - бесплатно), но господа из РКН сделали своё мерзкое дело, пришлось перемещать на отдельный сервер, еще и платить за него. Выключать сервис не вариант, я к нему привык, более того, людей, которые к тому моменту уже пользовались сервисом так же не хотелось подводить.
Если кто-то в Омске часто ездит через этот мост и у вас нет подобного под рукой - сервис работает, им можно пользоваться. А если у кого-то был похожий опыт с попыткой отдать что-то полезное городу бесплатно - интересно, у всех так тихо, или мне так повезло.
Что дальше?
А дальше будет ничего, мост обещают открыть к ноябрю/декабрю... Правда год не уточняли. Так что, как откроют - просто тушим и отправляем на кладбище пет проектов.