Назад к списку

Vibe coding: как собрать мобильное приложение для сторов, не написав ни строчки руками

aiclaudevibe-codingmobile
Vibe coding: как собрать мобильное приложение для сторов, не написав ни строчки руками

За месяц по времени и три дня чистой работы я выкатил в Google Play и App Store приложение TTSL Ferries — расписание паромов в Лиссабоне с живыми отправлениями, семью языками, тёмной темой и нативными сборками для Android и iOS. Весь код написал Claude Code: я не открывал IDE ни разу, только говорил, что хочу, проверял результат и давал обратную связь.

Зачем своё приложение, если есть официальное

У Transtejo есть собственное приложение. Говно говна. Конкретно:

  • Расписание и живые отправления живут на разных экранах. Чтобы понять, когда следующий паром вечером, нужно переключиться в live, а чтобы свериться с расписанием в субботу — в другой раздел. Постоянный пинг-понг между вкладками.
  • Фильтр живых отправлений работает отвратительно. Если ты в Cais do Sodré и твой паром идёт, скажем, в Montijo — из списка ближайших отправлений он выдавливается рейсами в Cacilhas, которые идут каждые 15 минут. Твоего парома просто нет в видимой области, пока он не окажется следующим.
  • Чтобы утром посмотреть вечернее расписание, надо лезть в отдельный раздел с графиком отправлений, свёрстанным, кстати, отвратительно.
  • Маршрут Terreiro do Paço — Barreiro бывает двух разных продолжительностей в зависимости от того, какой используется причал. В официальном приложении это обозначено сносками со звёздочками — вместо того, чтобы просто написать продолжительность. Зачем?
  • Маршрут Belém — Porto Brandão — Trafaria существует в двух вариантах с разным порядком посещения Porto Brandão и Trafaria. Снова звёздочки и сноски, пассажиру надо в них разбираться, чтобы понять, откуда куда он поедет. У меня в приложении порядок остановок сразу выводится правильно в зависимости от конкретного рейса.
  • Куча лишнего. Прогноз погоды. В приложении. Для расписания паромов. Зачем? Кому это усралось?
  • Только португальский. В Португалии живёт огромное количество людей, которые по-португальски не говорят — экспаты, туристы, недавние резиденты. Официальное приложение для них непригодно: интерфейс только на португальском, без вариантов.
  • Отзывы соответствующие. Люди ставят 2–3 звезды и пишут то же самое.

Простая логика: если официальный инструмент не делает того, что нужно, надо сделать свой. Раньше это означало месяцы работы — писать руками, разбираться со стеком, ловить баги. Сейчас, в век вайб-кодинга, реально быстрее собрать самому, чем искать идеальное готовое. Мы с женой пользуемся паромом регулярно, пробираться каждый раз через несколько кликов, чтобы посмотреть субботнее расписание или понять, сколько осталось до вечернего рейса, задолбало. Сел и сделал. А заодно и другим пригодится.

С чего начинать: знать, что ты строишь

Я уже собаку съел на построении UI и UX в разных проектах — и в клиентских, и в своих. Поэтому я сразу видел, как должен выглядеть экран: ближайший рейс, сколько до него минут, какая заполненность. В приложении буквально должен быть один экран. Всё. Никаких вкладок, никакой погоды, никакой навигации.

При этом вайб-кодинг отлично работает и в обратную сторону — когда идея ещё не оформлена. Можно быстро накидать несколько вариантов интерфейса, посмотреть, что удобнее, и дать потыкать другим людям. Вайб-кодинг — дешёвый инструмент проверки гипотез.

Стек: Next.js + Capacitor + Django

Это стандартный современный стек под такой класс задач. Ничего необычного.

  • Capacitor — опыт в предыдущих рабочих проектах был положительный. Гибридная разработка с одной кодовой базой под Android и iOS, без дублирования. Приложение здесь элементарное, под Capacitor ложится идеально.
  • Next.js + Tailwind — удобный фронт, который отлично подходит под вайб-кодинг. Сначала отлаживаешь всё, что можно, в веб-браузере, а потом уже собираешь билды под нативные Android и iOS. Здорово экономит время.
  • Django REST на бэке. Многие берут FastAPI, но мне нравится Django, потому что из коробки есть Django Admin и, например, те же email-шаблоны (на этом проекте они не нужны, но в целом часто нужны). Для такого класса приложений Django на производительность практически не влияет, а знакомая технология и знакомый подход экономят время: проще деплой, не расползается зоопарк из разных стеков, универсальные навыки и скиллы для Claude Code переиспользуются между проектами.

Что Claude Code сделал за меня

Приятное открытие — сколько скучной работы можно просто не делать.

  • Настройка проекта. create-next-app, cap init, Gradle-файлы, Info.plist — просто «собери мне каркас под Android и iOS», и через минуту всё есть.
  • Иконки и сплэш-скрины. Я положил одну 1024×1024 картинку и сказал «нарежь её под все разрешения и обнови в нужных папках».
  • Store listing. Описания для Google Play на семи языках, featured graphics, скриншоты в нужных размерах — всё делается тем же способом.
  • Privacy policy. Claude сгенерировал текст под конкретный набор данных, которые приложение собирает, и сверстал отдельной страницей.
  • Django admin. Одна просьба «собери админку для моделей маршрутов и расписаний» — и можно редактировать данные через веб-интерфейс.
  • Реверс-инжиниринг API. У Transtejo нет публичного API — всё, что есть, используется их собственным приложением. Claude помог вытащить нужные endpoint'ы: посмотреть сетевой трафик, разобрать параметры, построить под это свою интеграцию.
  • Fastlane. Claude сгенерировал всё, что нужно для Fastlane — конфиги, метаданные, локализованные описания. Сам процесс автоматизации я не запускал: обновляюсь редко, проще вручную взять готовый контент из ассетов Fastlane и залить его через веб-интерфейсы Google Play и App Store. Но при желании можно.

Я не помню, когда в последний раз сам делал adb shell или редактировал AndroidManifest.xml — всю низкоуровневую возню Claude делает за меня.

Сколько это реально заняло

Я веду трекинг своей активности 24/7 — своим же приложением, собранным тем же способом. Поэтому могу посмотреть точные цифры, а не «ну, месяц примерно».

  • Всего на проект — 22.5 часа. Включая буквально всё: разработку, генерацию ассетов, прогон через Internal Testing в Google Play, поиск тестировщиков для закрытого тестирования, подготовку локализованного контента на семи языках, отладку сборок, эксперименты с UI.
  • Чистый vibe coding — 6–8 часов. Собственно разработка: UI, иконки, privacy policy, Django admin, бизнес-логика.

Остальные 14–16 часов — сопутствующая рутина: сторы, скриншоты, Google Play, App Store, ревью, билды, подписи, ключи. Вайб-кодинг помогает и здесь — переводы, скриншоты, контент для сторов Claude делает тем же способом — просто не так заметно, как с кодом, но и без него уже никак.

Про календарь: первый коммит 13 марта, приложение в рабочем виде было через один-два дня. Всё остальное — ожидания и возня с магазинами. У Google Play сейчас сложная процедура закрытого тестирования, это плюс две недели ожидания. Для iOS я целый месяц ждал соглашения, чтобы выложить приложение в Евросоюзе — у Apple сейчас большая беда с ревью из-за Digital Services Act. Так что по датам коммитов ориентироваться не надо: рабочее приложение собралось быстро, дальше — больше ожиданий и бюрократии.

Что дальше

Приложение живёт, я им пользуюсь, а руки уже чешутся добавить ещё. В планах:

  • Цены прямо в маршруты. Сейчас стоимость билета надо смотреть отдельно — логично прикрутить к каждой линии.
  • Объявления Transtejo с автопереводом. Они периодически переносят рейсы, отменяют их из-за погоды, меняют причалы — всё это сейчас живёт на португальском в новостях на сайте. Подтянуть и перевести автоматически.
  • Схема движения. Визуальная карта линий: где какой терминал, какие маршруты где пересекаются.

Выводы

  1. Vibe coding — это не магия, а смещение работы. Ты перестаёшь писать код и начинаешь писать требования, давать обратную связь и тестировать. Но производительность при этом растёт очень заметно: то, что раньше заняло бы месяц-два, реально делается за три дня чистого времени.
  2. Стек выбирается по привычке и удобству. Next.js + Tailwind + Capacitor на фронте, Django на бэке — стандартный современный стек под такой класс задач. Не нужно изобретать велосипед.
  3. Честно тестируй и честно проходи процедуры. Неважно, писал руками или вайбкодил — технологический процесс надо соблюдать: разработка, тесты, код-ревью, рефакторинг. Тогда получишь нормальный результат.

Приложение лежит в Google Play и App Store. Если живёшь в Лиссабоне и плаваешь на пароме — скачать для Android / скачать для iOS.

© 2026 Ivan Bezdenezhnykh. Все права защищены.