Я выпустил анти-шагомер, который ругает за активность
Stoned считает шаги как моральный ущерб, награждает за покой и раз в день просит доказать, что ты жив, но не слишком активен. Внутри шутки - настоящее Android-приложение с датчиками, локальными пушами, ачивками и публикацией в RuStore.
Откуда это взялось
Последние годы почти любое приложение пытается сделать человека немного лучше: больше шагов, больше продуктивности, больше осознанности, больше привычек, больше подписок на лучший вариант себя.
В какой-то момент я подумал: а что, если сделать ровно наоборот?
Не закрывать кольца активности, а беречь их от шагов. Не поздравлять с 10 000 шагов, а вежливо уточнять: «Кому ты что доказываешь?» Не выдавать дофамин за очередную пробежку, а награждать за способность не вставать без крайней необходимости.
Так появился Stoned.
Название здесь скорее про stone - камень, неподвижность, а не то что вы подумали. А ещё это пародия на wellness-интонацию, где любой бытовой процесс можно упаковать как премиальный lifestyle-продукт.
Это не медицинский трекер, не приложение про ЗОЖ и не попытка переубедить кого-то ходить меньше. Это сатира на язык современной продуктивности. Но мне было важно, чтобы шутка работала не только на одном экране, а как полноценный продукт.
Как выглядит anti-wellness
У Stoned четыре вкладки.
Покой. Главный экран: шаги, таймер неподвижности, ленивый стрик и «сэкономленные от суеты» калории. Чем больше шагов, тем сильнее кольцо покоя уходит в тревожный красный.
Чек-ап. В случайное время с утра до вечера приложение открывает 10-минутное окно проверки. Нажимаешь большую кнопку «Я живой, но мне лень», а приложение смотрит на акселерометр и гироскоп. Если рука дрогнула, стрик сгорает. Потому что амбиции, очевидно, давят на нервную систему.
Коллекция. Девятнадцать анти-достижений. Например, «Первичная кристаллизация» за час без движения, «Ночной невроз» за активность между двумя и четырьмя ночи, «Тремор достигатора» за провал чек-апа и «Ошибка округления» за ровно один шаг за сутки.
Профиль. Stoned ID, которым можно поделиться как сторис. Внутри есть фейковая «Pro-лень» за 99 рублей. Пользователь проходит несколько угрожающе-коммерческих диалогов, а в финале узнает, что с него списали 0 рублей и остатки совести.
Почему это не просто мем-генератор
Сначала Stoned мог быть просто смешной картинкой: кольцо покоя, пара токсичных фраз и кнопка «Я живой, но мне лень».
Но мне было интересно сделать не скриншот идеи, а маленький самостоятельный продукт. Такой, который можно установить, открыть утром, получить уведомление, пройти чек-ап, разблокировать ачивку и поделиться карточкой.
В этом и была главная проверка: выдержит ли абсурдная идея несколько реальных пользовательских сценариев.
Потому что одно дело - придумать шутку про анти-шагомер. Другое - сделать так, чтобы она не разваливалась после первого запуска.
Stoned должен был:
- считать шаги;
- помнить состояние пользователя;
- работать без аккаунта и сервера;
- выдавать достижения;
- присылать локальные уведомления;
- открываться после пуша в правильном состоянии;
- переживать перезапуск приложения;
- выглядеть как нормальный продукт, а не как мемная заглушка.
И вот тут шутка внезапно стала дисциплинирующей.
Чем абсурднее идея, тем аккуратнее должна быть реализация. Если приложение ругает пользователя за 5000 шагов, оно не может само путаться в порогах. Если просит доказать, что ты жив, оно должно помнить, когда открылось окно проверки. Если выдаёт ачивку за неподвижность, она должна появиться не потому, что где-то сломался счётчик.
Иначе пользователь перестает смеяться и начинает дебажить шутку.
Что оказалось сложнее, чем казалось
Самое смешное: приложение про лень заставило меня довольно много двигаться.
Пришлось тестировать сборки, проверять поведение на Android, разбираться с уведомлениями, смотреть, как приложение ведет себя после перезапуска, и отдельно ловить баги, которые не видны в браузерном предпросмотре.
В разработке быстро выяснилось несколько вещей.
Во-первых, мобильное приложение нельзя проверять только в режиме «у меня на компьютере красиво». В веб-превью всё может выглядеть дорого: мягкие карточки, стекло, тени, голографический Stoned ID. А на реальном телефоне внезапно появляются белые прямоугольники, съезжает нижняя навигация или системные кнопки перекрывают интерфейс.
Во-вторых, датчики - это не магия. Если приложение считает шаги, оно должно быть готово к тому, что на одном устройстве всё работает, а на другом данные приходят иначе или не приходят вообще. Для медицинского трекера это была бы большая проблема. Для сатирического анти-шагомера - повод сделать несколько уровней защиты и честно помнить, что это не прибор, а продуктовая шутка.
В-третьих, пуши - это отдельная реальность. Пользователь нажимает на уведомление и ожидает попасть туда, куда его позвали. Если приложение после этого открывает пустой экран или забывает, что именно хотело проверить, вся магия рушится.
Под капотом у Stoned React Native, Expo, TypeScript, локальное состояние, датчики, уведомления и немного Android-специфики. Но технически это не столько история про стек, сколько про то, как мемная идея превращается в продукт с настоящими пользовательскими сценариями.
Модерация RuStore и реальность устройств
Отдельный квест - публикация в RuStore.
Первая попытка не прошла из-за скриншотов. Вторая - из-за верстки на другом Android-устройстве: системные кнопки перекрывали нижнюю навигацию. На моем Nothing Phone (1) с жестовой навигацией этот баг почти не проявлялся, поэтому я его просто не видел.
Это был хороший и немного унизительный урок: если приложение хорошо выглядит на твоём телефоне, это ещё не значит, что оно хорошо выглядит на Android.
Пришлось исправлять отступы, учитывать системные зоны экрана и проверять сборку на устройстве с трёхкнопочной навигацией.
В какой-то момент приложение, которое должно было защищать пользователя от лишней активности, заставило меня бегать между сборками, скриншотами, модерацией и тестами.
Кажется, Stoned начал воспитывать автора раньше, чем пользователей.
Почему мне это интересно
Я не думаю, что миру срочно нужен ещё один трекер активности. Их и так достаточно.
Но мне кажется интересной сама категория маленьких digital-продуктов, которые находятся где-то между пользой, шуткой и экспериментом. Они не обязаны сразу становиться бизнесом. Иногда достаточно, чтобы продукт был законченным артефактом: его можно открыть, потрогать, обсудить, отправить другу и сказать: «Смотри, кто-то реально это сделал».
Stoned для меня именно такой проект.
Снаружи - приложение, которое награждает за неподвижность.
Внутри - попытка собрать полноценный мобильный продукт из абсурдной идеи: с интерфейсом, логикой, состояниями, уведомлениями, достижениями, карточками для сторис и публикацией в сторе.
Мне нравится, когда шутка не заканчивается на уровне «ха-ха, прикольно». Когда она дожимается до работающей вещи.
Потому что в этот момент она перестаёт быть просто идеей и становится маленьким объектом реальности.
В мире, где почти каждый сервис пытается превратить человека в более эффективную версию себя, мне захотелось сделать маленький продукт, который говорит обратное: не обязательно каждый день становиться лучше. Иногда достаточно просто быть живым и не дергаться без необходимости.
Возможно, кому-то нужен ещё один трекер привычек. А кому-то нужно открыть приложение, увидеть «Диван верит в тебя. Не подведи инвестора» и почувствовать, что сегодня можно не улучшать себя хотя бы пять минут.
Что дальше
Если проекту станет тесно в формате шутки, хочется добавить:
- историю активности по дням, чтобы находить самый ленивый день недели;
- больше скрытых ачивок;
- тактильный отклик для чек-апа;
- английскую версию;
- лидерборд лени, если появится причина делать сервер и сдвигать с места offline-first архитектуру.
Пока Stoned просто вышел в RuStore. И, пожалуй, это уже неплохой результат для приложения, главная метрика которого — отсутствие лишнего героизма.
Stoned уже опубликован в RuStore. Если у вас Android и есть желание проверить, насколько уверенно вы умеете не спасать мир, ссылка будет ждать в первом комменте.