Vladyslav Didyk

Sprout — аффирмации о деньгах

Спокойное ежедневное приложение для денежного мышления — одна аффирмация в день, без аккаунта.

Sprout — аффирмации о деньгах

Sprout — ежедневное приложение с аффирмациями о деньгах для iPhone: несколько позитивных фраз в день, виджет на домашнем экране и без аккаунта. Я проектирую и пишу его один с 2024 года.

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

Роль
Один — дизайн и код
Сроки
2024 — по настоящее время
Стек
Expo SDK 54 · React Native 0.81 · React 19 · TypeScript · Zustand · Supabase · RevenueCat · Reanimated + Gesture Handler · @callstack/liquid-glass · @bacons/apple-targets

Замысел

Ежедневная привычка, а не затягивающая лента.

Для чего это приложение.

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

Почему Expo.

Expo — это набор инструментов, который позволяет запускать одну кодовую базу и на iPhone, и на Android с лёгким доступом к нативным возможностям вроде виджетов и уведомлений. Выпуск новой версии превращается в одну команду вместо недели работы.

Ваши данные

Всё остаётся на вашем телефоне.

Никакого входа, никогда.

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

Что где сохраняется.

  • Настройки приложения — Ваша тема, фон и то, как должен выглядеть и работать виджет.
  • Ваши карточки — Избранное, просмотренные и понравившиеся карточки за сегодня и выбранные вами темы.
  • Ваш профиль — Ваше имя, настройки напоминаний и ежедневная серия.
  • Тихий ежедневный сброс — Каждое утро приложение обнуляет счётчики за день и обновляет вашу серию — нажимать ничего не нужно.

Свайпер

Три карточки, сделанные под большой палец.

Для касаний, а не для прокрутки.

На главном экране лежит стопка ровно из трёх карточек: предыдущая, текущая и следующая. Когда вы смахиваете, верхняя карточка уезжает, а следующая вырастает на её месте. Одна и та же карточка не возвращается дважды за сессию.

Загружено один раз, дальше мгновенно.

Аффирмации загружаются из облака один раз за сессию и хранятся в памяти. Переключение вкладок их не перезагружает — приложение работает мгновенно, потому что данные уже на месте.

Напоминания

Распределены по дню, как плейлист.

Два способа напоминать.

Большинство приложений предлагают один вариант: «напомнить в 9 утра». В Sprout есть и более умный режим. Вы выбираете, сколько напоминаний хотите, когда начинается ваш день и когда заканчивается — например, шесть напоминаний с 8 утра до 8 вечера — и приложение равномерно расставляет их. Вы настраиваете это один раз в приветственном пути, а дальше всё делает телефон.

На домашнем экране

Настоящий виджет iOS, всегда синхронный.

Нативный, а не копия.

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

Что можно выбрать.

  • Стиль отображения — Только текст, текст с автором или текст с темой.
  • Источник контента — Карточка дня, случайная избранная или ваша собственная подборка.
  • Цвет акцента — Следует за фоном, выбранным в приложении.
  • Частота обновления — Как часто iOS должна запрашивать у виджета свежий контент.

Бизнес-модель

Бесплатно там, где формируется привычка, платно там, где глубже.

Простое и честное разделение.

Три темы бесплатны — этого достаточно, чтобы выработать настоящую ежедневную привычку. Ещё семь доступны по подписке (месячной, годовой или навсегда), которую обслуживает RevenueCat, стандартный инструмент для подписок в приложениях. Один переключатель в коде решает, что открыто.

Мастерство

Детали, из-за которых приложение ощущается как родное для Apple.

Мелочи, которые чувствуются.

  • Матовое стекло — Карточки, кнопки и панели выглядят как матовое стекло Apple, а текст настроен так, чтобы оставаться читаемым на стекле.
  • Двадцать два фона — Фон — часть продукта. Выбор нового фона заодно перекрашивает виджет.
  • Касание, которое чувствуется — У каждого действия своя крошечная вибрация: свайп, лайк и новый день серии ощущаются по-разному.
  • Спокойствие по замыслу — Четыре начертания шрифта, одна шкала отступов, один фирменный оранжевый. Ничто не кричит.

Качество

Тесты там, где они действительно помогают.

Два вида тестов.

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

Три пары глаз.

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

Следующий проект: KeySticker — панель сочетаний клавиш для macOS