GamFree: как я в одиночку сделал приложение против лудомании — без бэкенда, аккаунтов и подписок

от автора

Привет, Хабр. Это история о том, как я делал ставки 7 лет, потом бросил, а потом написал приложение, которое помогло бы мне бросить раньше. Расскажу и про продуктовые решения, и про техническую часть: React Native + Expo, полностью офлайн-архитектура без бэкенда, шесть языков, и как сейчас выглядит публикация в Google Play для нового индивидуального аккаунта разработчика.

Откуда это всё

С универа подсел на ставки. Поначалу просто по фану, потом уже не мог смотреть футбол ради удовольствия — обязательно надо было депнуть). Дальше по накатанной: депы, сливы, «отыграюсь» и т.п. В итоге бросил только в этом году (надеюсь, хоть на несколько лет).

Когда я бросал, я искал приложение-трекер — что-то вроде счётчика дней трезвости, но для ставок. И обнаружил странное: почти все приложения в этой нише устроены как то, от чего они якобы помогают избавиться. Подписка $9,99 в месяц с триалом, обязательная регистрация, пуши «вернись, твой стрик сгорит», реклама. Человеку с игровой зависимостью предлагают ещё одну механику удержания и ещё одно место, куда утекают деньги.

Плюс почти всё — только на английском. На русском нормальных инструментов я не нашёл вообще.

Так появилось ТЗ для самого себя: бесплатно, без рекламы, без аккаунтов, данные не покидают телефон, на русском (и не только).

Что в итоге получилось

GamFree — приложение для отказа от азартных игр. Основные механики:

  • Счётчик — время без ставок и сэкономленные деньги (считается от средних трат, которые указываешь при онбординге). Сэкономленная сумма оказалась самой мотивирующей цифрой — она растёт буквально на глазах.

  • SOS-экран «Хочу сыграть» — главный экран всего приложения. Тяга длится 10–20 минут, задача — пережить это окно: дыхательные упражнения (4-7-8, box breathing) с анимацией, напоминание о цели, кнопка звонка доверенному человеку.

  • Карточки триггеров — упрощённая КПТ-механика: записываешь ситуацию («пятница, зарплата»), автоматическую мысль («поставлю чуть-чуть»), альтернативную мысль и конкретный план. В момент тяги открываешь готовый план, а не споришь с собой с нуля.

  • Срывы без стыда — если человек сорвался, приложение не обнуляет его «достижения» с укором. Срыв логируется (триггер, сумма, эмоции), статистика показывает, что промежутки между срывами растут. Рецидив — часть выздоровления, и UX должен это учитывать.

  • Дневник, цели накоплений, достижения, аналитика настроения — поддерживающий контур вокруг основных механик.

Тон — спокойный, в духе Calm/Headspace. Никакой «жёсткой мотивации», никакой казино-эстетики и красных кнопок.

Техническая часть

Стек

React Native 0.85 + Expo SDK 56, TypeScript, React 19. Состояние — zustand с персистом в AsyncStorage, для тяжёлых данных — expo-sqlite. UI — без UI-китов, всё своё на react-native-svg: в нише «спокойных» приложений готовые компоненты выглядят чужеродно, а кастомных экранов всего шестнадцать — посильно для одного человека.

Из expo-модулей: local-authentication (блокировка приложения по биометрии — для многих важно, чтобы никто не увидел приложение и историю срывов), notifications (утреннее/вечернее напоминание, поздравления с вехами), haptics, localization, store-review.

Главное архитектурное решение: бэкенда нет

Совсем. Ни сервера, ни аккаунтов, ни аналитики, ни крэш-репортинга с отправкой данных. Все данные живут в AsyncStorage/SQLite на устройстве.

Причины:

  1. Это самые чувствительные данные, какие бывают. История срывов, проигранные суммы, записи дневника. Лучший способ не утечь — не собирать. «Мы не видим ваши данные» здесь не маркетинг, а архитектурный факт.

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

  3. Офлайн из коробки. SOS-экран обязан открываться мгновенно и без сети — тяга не ждёт, пока загрузится спиннер.

Цена решения: нет синхронизации между устройствами и бэкапа в облако. Для этой ниши это приемлемый размен — пользователи скорее предпочтут приватность.

Локализация

Шесть языков: русский, английский, украинский, немецкий, казахский, китайский. i18n-js + expo-localization, выбор валюты отдельно от языка (RUB, USD, EUR, UAH, KZT, GEL, TRY и другие) — человек может жить в Германии и считать в евро, читая интерфейс на русском.

Совет из опыта: закладывайте i18n с первого экрана. Вытаскивать строки из 16 экранов задним числом — худшая часть проекта.

Публикация в Google Play в 2026 году

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

  1. Закрытое тестирование обязательно. Новый индивидуальный аккаунт не может просто выложить приложение: сначала закрытый трек, минимум 12 тестировщиков, 14 дней непрерывно (до декабря 2024 было 20 — снизили). Я собирал тестировщиков [где — друзья/чаты, допиши].

  2. Заявка на production. После теста подаёшь заявку, где описываешь приложение и итоги тестирования. У меня рассмотрение заняло около двух суток: подал 4 июня, одобрили 6-го.

  3. Тематика — отдельная осторожность. Приложение со словами «ставки» и «казино» в названии рискует зацепить фильтры gambling-политик, хотя оно анти-гемблинговое. Я аккуратно формулировал описание (помогает, а не предлагает), на консент-экране — упоминание горячей линии психологической помощи. Категория — Health & Fitness. Прошло без вопросов, но формулировки выверял.

  4. Staged rollout. Выкатывался поэтапно 20% → 50% → 100% — для соло-разработчика без крэш-репортинга это дешёвая страховка.

Что дальше

В планах на 1.1.0 — апгрейд Expo SDK под требования Android 15 (edge-to-edge), поддержка изменений ориентации для Android 16. Из продуктового — смотрю на виджет счётчика на домашний экран и экспорт данных.

Приложение здесь: GamFree в Google Play

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

И если вы сейчас в той точке, где был я — из этого правда можно выбраться. Одним днём за раз.

ссылка на оригинал статьи https://habr.com/ru/articles/1045402/