Задача была личная, без клиента: сделать мобильное приложение, которое помогает человеку прожить день осмысленно. Не очередной трекер привычек и не медитация — а тихий помощник, который задаёт тон дню и помогает не пролететь мимо себя.
Что должно было получиться:
— Мобильное приложение для Android.
— Каждое утро — «фокус дня»: три небольших шага, связанных с настроением, погодой, интересами человека.
— Возможность записать ощущения после каждого шага.
— Совет наставника: опирается на философов и традиции, отвечает в контексте профиля человека.
— Встроенная библиотека книг, проверенных временем (PD-тексты).
— Приложение мероприятий: концерты, выставки, спорт — рядом с тобой.
— Дневник, планы, викторины, доска живых мыслей.
— Всё должно работать офлайн там, где это возможно, и синхронизироваться между устройствами.
— Оплата подписки, пуши, публикация в RuStore.
Ограничения: делал всё один, без команды, без бюджета. ИНН — самозанятый. Работал на своём VPS, стек выбирал по принципу «что могу поддерживать сам».
Стек:
— Мобильное приложение: React Native + Expo SDK 57, TypeScript, Expo Router.
— Состояние: React Context (Auth, Theme, Gamification).
— Бэкенд: Node.js + Express (REST API).
— База данных: Supabase (PostgreSQL + Auth + Storage + RLS-политики + RPC).
— LLM: DeepSeek через Yandex AI Studio (OpenAI-совместимый API).
— Оплата: ЮKassa.
— Пуши: Firebase FCM V1.
— Внешние API: Open-Meteo (погода), СПОНТАННО через MCP (мероприятия), ESPN (спорт).
— Инфраструктура: Ubuntu VPS, Nginx, PM2, SSL.
Как строилось:
1. Схема БД в Supabase — 30+ таблиц, RLS-политики на каждую, RPC-функции для операций, требующих атомарности (начисление лучей, списание, активация подписки).
2. Бэкенд на Express: 40+ роутов — авторизация, профиль, фокус дня, дневник, геймификация, оплата, доска.
3. Мобильное приложение — 30+ экранов, навигация через Expo Router, кэш данных в AsyncStorage, офлайн-очередь событий.
4. LLM-интеграции — не «обёртка над ChatGPT». Промпты учитывают профиль пользователя (интересы, возраст, цель на 5 лет, что беспокоит). Отдельные промпты под разные задачи: совет, разбор ситуации, генерация фокуса дня, аналитика месяца.
5. Оплата через ЮKassa — создание платежа, вебхук, активация подписки в базе через service key.
6. Публикация в RuStore — сборка AAB, подпись keystore, оформление карточки, прохождение модерации.
Всю разработку вёл с использованием LLM-инструментов (Claude, DeepSeek) как ускорителя. Код писал сам, архитектуру продумывал сам, но каждый экран, роут и SQL-запрос проходил через диалог с LLM — быстрее и качественнее, чем «в одиночку в блокноте».
Приложение опубликовано в RuStore, работает, доступно на howlive.ru. Приложение полностью функционально: от регистрации и онбординга до оплаты подписки, LLM-советов, встроенной библиотеки и публикации на доске.
Что удалось:
— Приложение от идеи до RuStore сделано за 6 месяцев одним человеком.
— Бэкенд работает на VPS, справляется с нагрузкой, автоматически перезапускается при сбоях.
— База данных выдерживает 30+ таблиц с RLS-политиками и не течёт.
— LLM-интеграции работают стабильно, промпты продуманы, стоимость запросов предсказуема.
— Приложение прошло модерацию RuStore с первого раза после двух исправлений описания.
Что это дало мне:
— Опыт полного цикла: от схемы БД до Nginx.
— Понимание, как встроить LLM в продукт, а не прикрутить его сбоку.
— Портфолио, которое не «на словах», а вживую: любой может скачать и потрогать.
— Навык работать с ограниченными ресурсами: один, без команды, без бюджета, но с LLM как ускорителем.