Как стать автором
Обновить

Как не забросить свой пет-проект. Мой кейс запуска приложения в App Store

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6K

Расскажите о себе и сути проекта?

Когда я только искал свою первую работу джуна iOS разработчика, я начал делать пет-проект — умный будильник. Тогда основной целью было просто положить его в портфолио, использовать на собеседованиях, ну а параллельно практиковаться и развивать свои навыки.

Я рассчитывал выпустить его месяца за три… как же я ошибался ?

Проект удалось релизнуть лишь спустя 4 года, за это время он несколько раз изменился до неузнаваемости: совершенно другой дизайн, функционал, ну и конечно же код, он множество раз переписывался по мере моего взросления в профессии.

Что я только не перепробовал:

  • Вдохновлялся и отчаянно пилил на энтузиазме нон-стопом.

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

  • Расписывал MVP, убирал всё лишнее. Множество раз.

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

  • Объявлял публично, что не буду стричься пока не выпущу Rise. И не стригся больше года ?? Но в определенный момент сдался.

  • Искал помощников. Ребят которые будут пилить со мной. Люди находились, но быстро испарялись, когда дело доходило до реальной разработки. Но в самом конце именно это и сработало!

В какой-то момент это приложение стало моим незакрытым гештальтом.

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

Поэтому за месяц с небольшим, общими усилиями мы довели MVP до App Store ?

Как появилась идея? Что вдохновило?

У меня всегда были и есть проблемы со сном. Ложусь спать я хаотично, хоть сколько-нибудь стабильного графика у меня нет. Бывает я встаю в 7 утра, а бывает в 7 только иду спать.

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

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

От этого я отталкивался в основной идее приложения — Rise фиксирует цель и формирует множество промежуточных точек, по сути просто сдвигает каждый день график сна на несколько минут.

Уже сильно позже, копнув глубже, я выяснил, что дело даже не в самом сне, а в моём лайфстайле, в установках в моей голове, которые часто приводят меня к тому чтобы предпочитать другую деятельность сну.

Тогда я потерял веру в идею, потому что она работает с симптомами, но никак не помогает с причиной их возникновения.

Поэтому, спустя время, концепция плавно сдвинулась в сторону приложения которое не только подсказывает точки отхода ко сну, но и мотивирует, поддерживает, а в случае “соскоков” помогает пересчитать эти точки.

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

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

Что вошло в MVP и сколько времени на него было потрачено?

MVP запущено спустя 4 года. Хахах) Но зато запущено!

Что вошло:

  • Создание и редактирование цели желаемого режима сна.

  • Генерация расписаний сна на сегодня и последующие дни.

  • Пауза — режим в котором расписание замирает на текущем дне, пока не захочется вернуться к движению к цели.

  • Отображение восходов и закатов солнца в паре с расписанием.

  • Помощь в перерасчете расписания на случаи соскоков.

  • Полноценный будильник внутри приложения.

  • Красивый онбординг да и вообще всё приложение реализовано в милом приятном стиле.

Какой технологический стек вы использовали? Почему?

Это нативное iOS приложение на языке Swift, на фреймворке UIKit.

Код открыт и доступен в open source.

WeatherKit

Погодный фреймворк от Apple, используется для фетчинга восходов и закатов.

Работает быстро и удобно.

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

XCode Cloud

Это no code CI/CD от Apple.

Мы использовали его для прогона тестов, для публикации в TestFlight и App Store.

Могу смело рекомендовать маленьким проектам, потому что настраивается чрезвычайно просто и работает как часы. Правда на этапе первичной настройки встретил несколько багов, естественно без каких-либо описаний ошибок, в стиле Apple. Удалось разобраться с ними примерно за час.

До конца года они предоставляют бесплатные 25 часов в месяц.

CoreData + CloudKit

CoreData это объектно ориентированная обертка над базой данных от Apple. В моей реализации достаточно громоздкая, но сейчас уже есть очень удобные интеграции со SwiftUI, которые позволяют работать с ней буквально в несколько строчек кода (и файлы описания моделей).

CloudKit это сихнронизация и хранение данных в iCloud. Интегрируется с CoreData и работает самостоятельно. Настройка простая. Для маленьких проектов — топ.

Swift Packages

Часть кода вынесена в пакеты, для более четкого разделения слоёв и удобного, а главное быстрого тестирования юнит тестами.

Легковесная альтернатива Cocoapods, некоторые пакетики я даже вынес в open source, чтобы использовать и в других проектах.

SF Symbols

Это нативные iOS иконки, я использовал их чтобы не заморачиваться с поиском иконок и не тянуть лишние ресурсы в приложение. Из минусов — многие иконки требуют высокую минимальную версию ОС. Но если это не проблема — работает очень просто и удобно.

GitHub Projects

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

Фич очень мало, но для маленькой команды, опять же — топ.

GitHub Pages

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

ChatGPT

В чём только он не выручал… Действительно ценный инструмент.

  • Генерация текстов, уведомлений, цитат, советов.

  • Прикольная идея, которая легко реализуема благодаря GPT: рандомизация текстов, то есть в одних и тех же местах показывать разное, оживляет приложение.

  • Советы по UI, например весь онбординг я делал с ChatGPT. А ещё на некоторых экранах он помогал определить куда лучше положить элементы управления. А в других местах помогал улучшить UX оценивая “понятность” экранов.

  • Маркетинговые советы, например ключевые слова для App Store.

  • Описания для App Store и для веб сайта.

Как вы запускались и искали первых пользователей?

Запустились только в App Store. Две недели реджектов, и наконец аппрув после нескольких фиксов. Пользователей не искал, только знакомые. Есть мысли про ProductHunt, но не уверен что проект к этому готов.

С какими самыми неожиданными трудностями пришлось столкнуться?

С тем что можно реализовать проект на 80% и забросить… И так множество раз ?

С тем что без корпоративного аккаунта apple developer другие разработчики не могут толком запускать проект на реальных устройствах.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Проект пока некоммерческий. Полностью бесплатен. Есть идея монетизировать через дополнительные платные фичи в будущем:

  • Синхронизация режима сна с солнцем, когда сдвигаются восходы и закаты — сдвигать расписание.

  • Прокачка будильника — звуки природы для засыпания и просыпания.

  • Подробная статистика снов и режима.

  • Интеграция со Spotify или другим подобным сервисом — чтобы юзер мог установить будильник из своих аудио.

Потрачено:

  • 100 баксов на apple developer программу.

  • 50 баксов на дизайн, иконку и иллюстрации (заказывал у начинающего дизайнера).

  • 100500 человекочасов и переживаний…

Какие планы на будущее?

Приложение сейчас на этапе MVP, а значит есть куча нереализованных интересных идей, которые хочется запустить:

  • Максимальная интеграция с системой: live activity, отправлять время сна в apple health, виджеты, приложение для часов, siri shortcuts.

  • Хранение отчетов по снам, возможность ими делиться.

  • Больше тем! Как минимум тёмная, причем для неё хочется сделать прямо отдельные иллюстрации.

  • Добавить серию или streak успешных засыпаний подряд.

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

Нужны ли какие-то советы или помощь?

Буду рад услышать любые советы, мысли или фидбек. Буду очень рад если скачаете и попробуете Rise сами!

Если хотите поучаствовать в разработке — велком, проект опенсорсный, доска и роадмап публичные, пишите! Добавлю в чатик и будем делать Rise вместе.

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

Какой совет вы бы сами могли дать идущим по вашим стопам?

  1. Когда проект не приносит денег, ищите мотивацию помимо энтузиазма. На энтузиазме далеко не уехать!

Для меня решающей мотивацией стали другие люди которые помогали мне в разработке и тестировании. Их фидбек, настрой и новые идеи.

  1. Продумайте MVP: основные фичи и юзер стори. Зафиксируйте список задач MVP и не добавляйте туда ничего нового, кроме обязательных неучтенных штук.

  2. Отбросьте всё лишнее — переписывание кода на новую архитектуру подождет, функционал который кажется необязательным лучше тоже отложить.

  3. Не гонитесь за инструментами и практиками. Берите самое простое и быстрое. Если можно что-то не затягивать — не затягивайте. В моём проекте вообще нет сторонних зависимостей кроме нативных фреймворков.

  4. Найдите людей, возможно среди близких, которым будет интересно тестировать проект и от которых будет фидбек — это мотивирует.

  5. Если не можете предложить денег — ищите новичков. Дизайн, разработка, тестирование. Новички могут согласиться помочь за скромные суммы или за сам факт работы вместе с экспертом. Это абсолютный вин-вин. К тому же начинающие специалисты часто с “горящими глазами”, чего может не хватать вам, если проект затянулся.

Теги:
Хабы:
Всего голосов 10: ↑9 и ↓1+10
Комментарии10

Публикации

Истории

Работа

Ближайшие события