Расскажите о себе и сути проекта?
Когда я только искал свою первую работу джуна 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 в настройках приложения.
Какой совет вы бы сами могли дать идущим по вашим стопам?
- Когда проект не приносит денег, ищите мотивацию помимо энтузиазма. На энтузиазме далеко не уехать!
Для меня решающей мотивацией стали другие люди которые помогали мне в разработке и тестировании. Их фидбек, настрой и новые идеи.
- Продумайте MVP: основные фичи и юзер стори. Зафиксируйте список задач MVP и не добавляйте туда ничего нового, кроме обязательных неучтенных штук.
- Отбросьте всё лишнее — переписывание кода на новую архитектуру подождет, функционал который кажется необязательным лучше тоже отложить.
- Не гонитесь за инструментами и практиками. Берите самое простое и быстрое. Если можно что-то не затягивать — не затягивайте. В моём проекте вообще нет сторонних зависимостей кроме нативных фреймворков.
- Найдите людей, возможно среди близких, которым будет интересно тестировать проект и от которых будет фидбек — это мотивирует.
- Если не можете предложить денег — ищите новичков. Дизайн, разработка, тестирование. Новички могут согласиться помочь за скромные суммы или за сам факт работы вместе с экспертом. Это абсолютный вин-вин. К тому же начинающие специалисты часто с “горящими глазами”, чего может не хватать вам, если проект затянулся.
Я по названию думал, что приложение ищет, с кем спать🤣
С удовольствием протестировал бы, но Айфона нет. Удачи большой!
Привет! Ещё не прочёл потому что сильно удивился — около года пользуюсь приложением с таким же названием. Но похоже, это не твоё? https://www.risescience.com
Выходи на product hunt, чтобы привлечь пользователей.
Чем быстрее тем лучше :)
А я думал это приложение ищет тебе "человека из интернета", который спит в таком же режиме как и ты.
А перед тем как пойти спать вы друг-друга пингуете.
<система ушла в глубокий сон>