pr22m

На Пикабу
в топе авторов на 49 месте
100 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
0

Вайб-кодинг на практике: делаю интервальный таймер для Android с Codex

Серия Вайб-кодинг

Привет, Пикабу. Хочу представить на суд общественности небольшой Android-проект, который делаю как очередной эксперимент в вайб-кодинге – разработка мобильного приложения. Это мой первый пост здесь, прошу сильно ногами не бить.

Для тех, кому интересна техническая часть проекта, и примерный процесс создания.

Приложение написано под Android на Kotlin. Интерфейс сделан на Jetpack Compose, сборка через Gradle Wrapper. Общее количество строк кода на Kotlin в этом проекте – 6600. У меня есть определенный опыт в программировании, но до работы над этим приложением с Kotlin, Jetpack Compose и Gradle я никогда не работал. Отдельный маленький привет моему отсутствию опыта в Android: на старте я не поменял applicationId, поэтому он остался почти дефолтным. Отладку делал сначала в эмуляторе, а потом стал делать непосредственно в своем телефоне, через ADB. Работаю в vscode с агентом Codex/ChatGPT.  

Сам процесс вайб-кодинга в моем случае выглядит примерно следующим образом: первым промптом я обычно кратко описываю общую суть идеи, что именно хочу сделать, какие обязательные фити там нужны и для какой платформы нужно приложение. Если мне область знакома, то сразу описываю стек, если нет, как в данном случае – прошу проанализировать и дать совет по выбору стека. Далее прошу развернуть саму идею и сохранить в файл, чтобы сверяться с ним. Но на самом деле лично в этот файл практически никогда больше не залезаю, обычно отправляю туда агента для контроля и уточнений.

После того, как идея расписана, стек подобран, начинается рутинная работа. Примерно так: промпт «Проанализируй идею. План.» Далее знакомлюсь с планом, если есть какие-то замечания, правки – озвучиваю, иногда прошу агента задавать уточняющие вопросы. Если задаю вопросы, то обязательно указываю «сначала напиши список вопросов, а потом задавай их в интерактивном режиме по одному». Это для того, чтобы агент не ушел в глобальные размышления о каждой мелочи, а сразу ограничился конкретным списком вопросов. Интерактивный режим удобен тем, что не надо читать всю портянку, а можно размеренно отвечать на каждый вопрос и задавать уточняющие по мере необходимости. В конечном итоге промпт «делай». Агент у меня работает в виртуалке с полными правами, поэтому в таком режиме он может работать минут 5-10, иногда и больше без моего физического одобрения различных команд. В обычном режиме при работе с codex я не смог отключить эти вечные запросы-разрешения, поэтому и отправил его в виртуалку, наделив полной властью. Большой проект целиком он сразу не делает. Обычно он делает какую-то часть, каркас, какие-то начальные механики с заглушками, после чего отчитывается что сделал такую-то часть. Далее промпт: «что дальше по плану» - это если мне надо что-то уточнить, или сразу «делай дальше».

После нескольких итераций, когда уже получается относительно рабочее приложение – прошу его запустить. В данном случае это было в Android Emulator из Android Studio. Кстати, в последнее время почти весь необходимый софт, включая андроид-студио, Gradle и т.д. я либо прошу агента, чтобы он установил сам, либо прошу команду для PowerShell. С консолью работаю прямо из vscode.

Следующий этап, когда первая версия запускается в эмуляторе, начинается допиливание. Если нужно что-то добавить, сделать какое-то определенное меню – я ему так и описываю. Если уже что-то есть готовое, но нужны косметические правки или что-то конкретно не нравится – то раньше я так же пытался описать, а теперь просто делаю скрин экрана при помощи ножниц в виндовс, кидаю ему этот кусок скрина прямо в чат и пишу – «измени цвет», «меню сливается, предложи вариант», «измени шрифт» и т.д. Обычно к каждому такому промпту добавляю «Анализ» или «План». Далее читаю, вношу правки при необходимости и снова «Делай». Доработки функционала идут по такому-же принципу – «нужно сделать запись звука, план». Или «нужно добавить сохранение тренировок, план». Агент описывает примерную концепцию, я так же вношу правки при необходимости и потом прошу реализовать. Собственно примерно в таком режиме и происходит разработка – анализ, что есть, далее – промпт на допиливание/изменение, либо на внедрение новой фичи.

В этом проекте, в определенный момент я решил, что нужно протестировать приложение в реальных условиях. Для этого при помощи агента настроил удаленную отладку по wifi, т.к. я уже забыл все нюансы, даже подключения и далее тестировал приложение на телефоне. После очередной доработки просил его установить приложение на телефон и тестил. Для сборки дебаг-версии и релизной версии apk я попросил сделать соответствующие скрипты, т.к. часть текста, особенно политика конфиденциальности берется из md файлов на момент сборки. Ну и на случай, если вдруг по какой-то причине доступ к агенту пропадет, чтобы я мог что-то изменить, сделать и собрать сам. Хотя я понимаю, что это утопия – в таком проекте, даже с документацией в формате md на 2500 строк в этом проекте – мне это будет почти нереально. Примерное время, которое мне понадобилось на реализацию этого проекта в текущем виде – от 20 до 30 часов. Это время, которое я непосредственно провел, сидя за компом. Точным подсчетом я не занимался, оцениваю примерно.

Еще в последнее время, если проект разрастается, я начинаю заниматься рефакторингом. Прошу агента провести анализ и дать предложения по рефакторингу. Далее прошу сделать план и отправляю его делать. Если проект крупный – агент обычно делает план рефакторинга так же, по шагам – одну часть, потом остановка, потом другую и т.д. За один подход, проект размером в несколько тысяч строк он не рефакторит) Как было написано выше – общее количество строк кода в этом приложении – около 6600, небольшой рефакторинг я уже делал.

Из дополнительных инструментов я использую git, который поднял на домашнем сервере. Это  удобно для хранения всех своих поделок, копания в истории, при необходимости (такое уже было пару раз). Хотя для кого-то это банальная база. Так же при помощи git деплою некоторые свои поделки на боевых серверах.

Теперь немного о самом приложении. Это классический интервальный таймер для круговых тренировок с чередованием работы и отдыха. Почему таймер? А так получилось. Мне показалось это то приложение, которое можно достаточно быстро сделать полностью работоспособным и относительно отполированным для размещения в сторах. Тем более когда-то давно я подобными пользовался, но в них не было возможности настраивать разные интервалы. Возможно сейчас такие возможности уже во многих есть, но в свое время я не нашел. Но самая главная фишка этого приложения – оно полностью бесплатное и без рекламы.  Возможность добровольной поддержки разработчика есть, но это никак не влияет на его функциональность – функциональность полная и не зависит от наличия или отсутствия таких покупок у пользователя. Это некая такая «месть» всем тем, кто пишет приложения с кучей рекламы или урезанными функциями)

Буду ли я использовать рекламу, подписку и другие «нехорошие» способы монетизации в будущем в других приложениях? Скорее всего буду – я же все-таки тоже человек)

Что сейчас уже есть. На текущий момент в приложении уже реализована простая тренировка, в которой настраивается время работы и отдыха и сложная тренировка, в которой можно создать несколько интервалов со своим временем работы и отдыха – например отжимания 40/20, приседания 50/30 и т.д. Каждому интервалу можно дать свое название, которое отображается на экране работы и на экране отдыха, для подготовки к следующему упражнению. Тренировки можно сохранять.

Из дополнительных возможностей – прямо в приложении можно записать короткое аудио, до 5 секунд, там же его отредактировать (обрезать пустое начало и конец) и поставить его в качестве сигнала начала у конкретного интервала. Например: «Приседания», «Прыжки» или любое другое сообщение, можно подбадривающее)

Площадку RuStore выбрал по объективным причинам – в наше время с гуглом все очень сложно в этом плане.

Для ознакомления прикрепляю скриншоты. Если кому интересно посмотреть/протестировать – вот ссылка на рустор - Интервальный таймер.

Ради эксперимента к посту добавлю сбор на следующую фичу - поддержку нагрудных пульсометров. Сразу скажу: это не условие ее появления. Я планирую сделать эту возможность в любом случае, даже если сбор ничего не соберет. Как и все остальные функции приложения, она будет бесплатной. Просто интересно проверить, работает ли такой формат поддержки маленького бесплатного проекта. Если кому-то идея приложения близка и хочется подкинуть мотивации - буду благодарен. Панамку тоже приготовил на всякий случай, но даже если она полностью наполнится, приложение все равно останется бесплатным и без рекламы.

UPD. Сбор прикрутить не получилось, возможно из-за первого поста здесь. Значит оставляю только панамку)

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

Скриншоты

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества