Или как собрать и довести продукт до релиза без кодинга и почти бесплатно. Или моя попытка разобраться в процессе разработки и далее использовать как учебное пособие не делая скучные "Hello world", калькуляторы. Что-то живое, нужное и настоящее.

Тут не будет полного разбора кода, больше сам процесс
1. Идея
2. Поиск решений
3. Реализация

Иллюстрация для Google Play
Иллюстрация для Google Play

Я закончил колледж в далеком 2016 году, изучали мы в основном Delphi и чуть чуть C++. Работал я потом в основном в поддержке и администрировании и решил попробовать вернуться в разработку

Идея

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

Поговорим о специфике. В Берлине есть два крупных "оператора" это BVG, управляет: метро, автобусы, трамваи. И DB(дойче бан, ну как наше РЖД), ему принадлежит сеть городских электричек S-Bahn, есть еще так называемые региональные электрички, там две компании регулируют. Все это входит в общее объединение, называемое VBB.

Ранее я постоянно пользовался местным приложением оператора общественного транспорта и Google Maps. Приложение от компании BVG в нем собирается вся информация в том числе и о электричках. Пользовался, пока они решили не обновить якобы для удобства и... Это стало ужасно. Рейтинг в Google Play упал ниже 2. Вы наверное спросите, а что произошло? А произошло следующее. Ранее открыв приложение каждый практически сразу видел свою остановку и самое главное, актуальное расписание. Ты всегда мог в практически 2 клика увидеть "табло"остановки. А что сейчас. Сейчас для того чтобы открыть "табло" я должен на карте найти свою остановку, со второго и третьего раза правильно кликнуть на значок остановки, которого кстати иногда и нет в некоторых местах. Жутко бесило. Надо сказать спасал виджет пока он не перестал работать. И самое главное, сотни жалоб, но ничего так и не изменилось.

Поэтому возникло со временем две мысли. А что если написать свое приложение? А что если попробовать использовать ИИ от google Gemini? Т.е. посмотреть что могут современные модели.

Реализация, стек

Итак, выбор через что писать выпал на Gemini, с Claude я не был знаком. GPT не выбрал потому что он не позволяет в бесплатной версии работать с таким массивом данных, поле ввода данных сильно ограничено. Написано приложение на языке Kotlin, используется Android studio.

Так как я ранее упомянул об транспортном объединении VBB покрывающего Берлин и часть земли Браденбург, то все транспортные компании работающие в Берлине и окрестностях отправляют данные в VBB, логично было принято решение тянуть данные именно от туда. Информация берется через публичный API, мне не пришлось использовать генерацию каких либо ключей, регистрацию и так далее. Что очень удобно для маленьких разработчиков, но главное условие это некоммерческое использование. Т.е. я не могу сделать платным или вводить подписки. Да и к тому же устав от кучи рекламного мусора, я решил избавить свой продукт от него.

Начали мы с самого простого, а это просто табло. Я составил Prompt, объяснил что мне нужны карточки, с информацией отправления, через сколько минут прибудет тот или иной транспорт.

Логика работы
  • Определяем местоположение

  • отправляем координаты серверу VBB

  • получаем ответ от сервера: название остановки, маршруты, время

итоговый экран табло отправлений
итоговый экран табло отправлений

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

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

Развернутые уведомления
Развернутые уведомления

Следующее что получилось реализовать, это оповещения об изменениях. Когда мы стучимся по api мы получаем ответ в виде JSON в котором есть информация в том числе и об авариях. Приложение понимает что вот это оповещение об изменении и соответственно пишет вверху что сейчас автобус 123 отменен по этой причине. Самое главное реализовано то чтобы оповещения показывались только те что относятся к данной остановке и линиям на этой остановке, а не все подрят засоряя экран визуальным мусором. Ну и последнее что я реализовал на экране это возможность увидеть расписание конкретного маршрута

Для каждой линии в Берлине есть свой цвет и мы его применяем для того чтобы покрасить иконку.

автобусы на карте
автобусы на карте

Следующая задача была у меня, добавить карты. Я остановился на выборе OSM. Дело в том что мы можем не только получать информацию о времени, ну и также примерное местоположение транспорта. Я внедрил функцию радар. Т.е. по сути мы открывая карту на определенном масштабе, как бы сканируем все вокруг о��правляя запрос о том какие автобусы в данной области сейчас ходят. Что дальше, а дальше мы получаем примерные координаты каждого автобуса в зоне видимости. Далее вступает чуть чуть математики, чтобы было движение не рывками, приложение примерно высчитывает с какой скоростью едет автобус, после чего делает расчет где примерно автобус, в следствии чего движется маркер автобуса. Маркер это маленькая капля которую программно красят в нужный цвет, и согласно расчетам поворачивают в ту сторону куда едет автобус.
В дальнейшем я сделал группировку по типу транспорта, отображние остановок и возможность кликнуть по автобусу и увидеть его маршрут, а также расписание.

маршрут
маршрут

Логичным продолжением стала реализация построения маршрута.
Вот тут я столкнулся с проблемой. Дело в том что API не умеет корректно обрабатывать запросы по адресам или координатам при запросе во время построения маршрута. Выход нашелся в использовании поиска по остановкам. Также есть возможность посмотреть на карте и если есть какие-то оповещения о проблемах на линии маршрута, их также видно.
Ну главное, раз мы можем смотреть маршрут на карте, почему бы кнопку в карточку автобуса не добавить чтобы посмотреть его маршрут на карте.

Ну и главное теперь, приложение получилось очень монолитным, реализовано много функций не сломав при этом простоту. Главный акцент неизменно это табло отправлений. Тесты показали около 5 секунд от запуска до прогрузки табло отправлений. Весь код занимает около 2000 строк

Релиз в Google Play

Вот мы и добрались до самого интересного. Продукт вроде бы есть, рабочий, а как релиз сделать.

  1. Нужно зарегистрироваться как разработчик, указав персональные данные

  2. Заплатить взнос 25 евро

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

Выводы

Казалось бы какие выводы. Мои личные выводы такие.

  • Что теперь человеку с минимальным опытом реально довести проект до релиза

  • Новые языковые модели достаточно сильны чтобы объяснить код, разобрать, найти ошибки или даже полностью написать проект

  • Из опыта общения с Gemini понял что лучше всего для написания подходит Canvas.

  • Это классный способ разобраться в разработке и сделать полноценный продукт, а не делать скучные маленькие проекты и уже на примере готового проекта разобрать код и понять как что устроено и мне кажется так намного быстрее чем начинать с маленьких простых проектов которые я еще делал в колледже

Планы

  • Довести до релиза

  • Разбить один файл на несколько

  • Понять полностью код и использовать как пособие по обучению

Комментарии (16)


  1. zamsisadmin Автор
    30.01.2026 22:48

    Сделал опечатку, не 25 евро, а долларов


    1. withkittens
      30.01.2026 22:48

      Это же ваша статья, вы можете исправить текст.


  1. zamsisadmin Автор
    30.01.2026 22:48

    Если тот кто поставил минус написав больше рекламы чем пользы, пояснит что имел ввиду, буду признателен.

    Потому как рекламы тут и нет и я не понимаю где ее видно.


  1. Vacheslav_m
    30.01.2026 22:48

    А зачем вам последний этап: "Понять полностью код" ?

    Удивительно как вы с gimini смогли все это проделать, мои тесты с gimini, особенно на сложных(по моему мнению) шагах постоянно выкатывали ошибки. Клод и ГПТ, решили эти проблемы.

    А так удачи в релизе.

    Есть группы в ТГ и приложения в плей маркете с взаимным тестирвоанием.

    Или же найти за 5$ платную слугу. (Там же в плей маркете)

    В итоге я платной воспользовался и на бесплатных ресурсах разместился по взаимному тестированию. По статистике было около 50 скачиваний.

    Все прошло успешно.


    1. withkittens
      30.01.2026 22:48

      А зачем вам последний этап: "Понять полностью код" ?

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


  1. albalyu
    30.01.2026 22:48

    Очень странная картинка-противопоставление в начале статьи. Интересно, что Вы хотите ей сказать?

    Что для программирования нужен компьютер, а для вайб-кодинга нет? Так это не так.

    Что вайб-кодеру достаточно тыкать пальцем в экран и у него все соберется? И это не так.

    Или что программист постоянно хмурый и не знает в каком месте искать баги в его коде, а у вайб-кодера все за него сделает ИИ-шка? Так поспешу вас расстроить: не сделает. И если вайб-кодер не имеет абсолютно никакого понимания, то код будет очень грязный и кривой с очень большим количеством багов.

    Или, что гораздо более вероятно, эта картинка сгенерирована нейросетью по Вашему промпту, а Вы, не подумав, о чем она может говорить, просто прилепили ее в начало статьи?

    Я почему-то склоняюсь к последнему варианту.


    1. zamsisadmin Автор
      30.01.2026 22:48

      Я пытался подобрать что-то что могло бы одной картинкой описать процесс и различия стандартного программирования и через вайб кодинг. Возможно не самое удачное получилось


  1. Nibelung2
    30.01.2026 22:48

    Жаль, что нет примеров кода, который вам написал Germini. Увидеть бы хотя бы часть ВьюМодели.


  1. themen2
    30.01.2026 22:48

    А где код? Можно посмотреть?


    1. zamsisadmin Автор
      30.01.2026 22:48

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


  1. UnknownUser
    30.01.2026 22:48

    В следующий раз рекомендую начать с подробного технического задания - его лучше написать самому, а потом обсудить с нейронкой (тут может возникнуть много интересных идей, которые вам в голову не пришли). Далее, разбиваем приложение на модули, классы и функции - тут уже можно просто скормить нейронке полученное тз .

    Далее, можно либо самому наполнить все рабочим кодом, либо навайбкодить по частям .

    Так проект будет изначально более продуманным, структурированным и легко поддерживаемым, чем если сразу код писать.


    1. ArtCat
      30.01.2026 22:48

      Ещё, не мало важно, вести план внедрения и завершенные работы с четким описанием, структурой и архитектурой. И подрубить RAG через mcp, чтобы нейрона всегда знала что где и как - в итоге даже очень огромный проект успешно правиться и корректируется GPT 5.2 со стремящимися к 0 багами.


  1. ZlayaBelka1985
    30.01.2026 22:48

    Уже давно есть группы в которые идёшь и просишь чтобы тебя протестили в гугле


  1. zamsisadmin Автор
    30.01.2026 22:48

    Чтобы я хотел добавить к статье, возможно да, не совсем прям на 100% технически грамотно оформил статью. Цель была показать тот путь что я прошел. В данный момент не смотря на недочёты приложение работает стабильно выполняя главные функции которые я преследовал.


  1. DarkGenius
    30.01.2026 22:48

    А не пробовали использовать агентов типа Manus, поддерживающих полный цикл разработки и публикации мобильного приложения в своем веб-интерфейсе?


  1. accXak
    30.01.2026 22:48

    хабр.de