Главная проблема любого трекера расходов (приложения для учёта расходов) — скорость ввода. Пользователь бросает приложение, если фиксация траты требует больше двух тапов. Всё остальное — аналитика, лимиты, экспорт — вторично. Команда имеет 5+ лет опыта в разработке финансовых приложений и реализовала более 50 мобильных проектов. Мы выработали подход: замена системной клавиатуры на кастомный нумпад сокращает время ввода на 200–300 мс. При 50 записях в день это экономит 5–7 минут в месяц. А главное — быстрый ввод напрямую влияет на удержание: если запись занимает доли секунды, привычка закрепляется, и пользователь начинает контролировать бюджет, экономя до 5000 рублей в месяц.
Почему скорость ввода — главная метрика?
Удержание пользователя напрямую зависит от того, насколько быстро он может внести расход. Мы добиваемся, чтобы фиксация траты занимала не более двух секунд. На iOS используем виджет Home Screen через WidgetKit с AppIntent — он открывает шторку ввода без полного запуска приложения. Кастомный Shortcut позволяет вносить расходы голосом через Siri. Живая активность в Dynamic Island показывает баланс дня без разблокировки экрана. На Android — Tile в Quick Settings через TileService: один свайп и тап, приложение не открывается полностью. Floating widget через WindowManager — спорное решение, но даёт максимальную скорость.
| Платформа | Способ быстрого ввода | Количество тапов | Задержка |
|---|---|---|---|
| iOS | WidgetKit + Shortcut | 2 | 100 мс |
| Android | TileService + Widget | 2 | 150 мс |
Кастомная клавиатура-нумпад для суммы заменяет системную, которая добавляет 200–300 мс задержки. Автофокус на поле суммы, категория по умолчанию — «последняя использованная», оценка по геолокации (рядом кофейня → категория «Еда»). Кастомный нумпад в 3 раза быстрее системной клавиатуры.
Проектирование категорий и лимитов
Категории с иконками и цветами, вложенность максимум один уровень (подкатегории). Месячные лимиты на категорию — храним как отдельную сущность BudgetLimit с categoryId, amount, month. При превышении 80% лимита — локальное уведомление. Расчёт прогресса — только при открытии экрана плюс фоновый пересчёт раз в час.
Аналитика и экспорт: ключевые возможности
Графики: круговая диаграмма по категориям за период, столбчатый по дням. На Flutter — fl_chart, на iOS нативно — Swift Charts. Не тащим тяжёлые библиотеки для двух простых графиков. Экспорт в CSV и PDF. CSV — тривиально. PDF через PDFKit (iOS) или PdfDocument (Android) — рендерим таблицу расходов с итогами. Пользователь может выбрать период и набор категорий перед экспортом.
Как обеспечить синхронизацию между устройствами?
Если нужен sync — Firebase (Realtime Database или Firestore) с merge-логикой. Главная ловушка: конфликты при одновременной записи с двух устройств. Стратегия: last-write-wins по updatedAt timestamp для простых случаев, либо CRDT для сложных. Для большинства трекеров достаточно last-write-wins. В случае простого трекера расходов last-write-wins оправдан, так как вероятность конфликта низка.
Технические детали синхронизации
Для реализации CRDT используется алгоритм LWW-Register (Last-Writer-Wins Register) на основе векторных часов. Это гарантирует консистентность без блокировок. Мы применяем готовую библиотеку Automerge для нативных платформ.При разработке мы следуем App Store Review Guidelines 5.1.1 для защиты данных.
Состав deliverables
- Архитектурная документация и модель данных
- Репозиторий с исходным кодом (Git)
- Настроенный CI/CD (GitHub Actions, Fastlane)
- Публикация в App Store и Google Play
- Доступ к тестовой сборке (TestFlight, Firebase App Distribution)
- Обучение команды заказчика (2–3 часа вебинар)
- Гарантия 30 дней на исправление багов после релиза
Процесс работы
- Аналитика и постановка задачи — уточняем сценарии, платформы, необходимость синхронизации, импорт из выписок.
- Проектирование — модель данных, прототипы навигации, согласование UX быстрого ввода.
- Реализация — разработка бэкенда (если нужен), клиентской части, интеграция виджетов и push-уведомлений.
- Тестирование — функциональное, нагрузочное (до 10 000 записей), проверка на реальных устройствах.
- Деплой — публикация в сторах, настройка мониторинга (Crashlytics, Google Analytics).
Тестирование производительности
Проводим нагрузочное тестирование с 10 000 записей в базе данных. Проверяем время отклика экрана списка расходов — не более 200 мс. Для виджетов и Tile тестируем на устройствах с iOS 16+ и Android 12+.
Ориентиры по срокам
| Версия | Срок |
|---|---|
| Базовый трекер | 3–5 недель |
| С виджетами и sync | 7–10 недель |
Стоимость рассчитывается индивидуально. Свяжитесь с нами для консультации инженера до старта работ. Закажите разработку трекера расходов — получите прототип за 2 недели.







