Розробка мобільного додатку для планування бюджету
Відзначимо: коли користувач відкриває бюджетний додаток, він очікує не просто історію «скільки витратив учора». Йому важливо зрозуміти: «Чи зможу я купити квартиру через 3 роки?», «Чи не перевищу ліміт до зарплати?». Це змінює архітектуру: замість простого обліку транзакцій потрібна модель бюджетування з прогнозами, цілями та правилами. Ми спеціалізуємося на таких проектах — за роки роботи запустили 8 фінансових додатків, середній рейтинг у сторах 4.7. Архітектура повинна підтримувати гнучку модель обліку, прогнозування та синхронізацію між пристроями.
Яку методологію бюджетування обрати?
Три основні схеми, і під кожну — своя модель даних:
Envelope budgeting (конвертний метод). Кожна категорія — «конверт» з виділеною сумою на місяць. Витратив — конверт зменшується. Перевитрату можна покрити з іншого конверту. YNAB працює саме так. Технічно: сутність Envelope з allocated, spent, available. Транзакція зменшує available у конверті, а не просто записується в історію. Докладніше про метод на Wikipedia.
Zero-based budgeting. Кожен рубль доходу має бути призначений у категорію. income - sum(allocations) = 0. Вимагає активного розподілу на початку місяця — підходить для дисциплінованих, але відлякує casual-користувачів.
Percentage-based (50/30/20). Автоматичне ділення: 50% — потреби, 30% — бажання, 20% — накопичення. Реалізується як rules-engine поверх транзакцій з автокатегоризацією. Менше дій — вище retention.
Важливо закласти підтримку кількох методологій або хоча б чітко визначити одну на старті — переробка моделі даних обнулить місяць роботи. За нашим досвідом, конвертний метод дає на 30% більше активних користувачів за рахунок наочності — це найкращий старт для утримання аудиторії.
Прогнозування та цілі накопичень
«Накопичити 150 000 на відпустку до серпня» — це SavingsGoal з targetAmount, targetDate, currentAmount. При додаванні доходу система пропонує направити частину в ціль. Прогресбар з датою: якщо темп поповнень недостатній, відображаємо попередження з розрахунком необхідного щомісячного внеску.
Прогноз витрат на основі історії — проста ковзна середня за 3 місяці з поправкою на сезонність (грудень завжди аномальний). Реалізується на клієнті без ML — достатньо SQL-агрегації з GROUP BY month. Для точності використовуємо зважене середнє з коефіцієнтом 0.6 для останнього місяця.
Recurring transactions
Регулярні платежі (підписки, оренда, кредити) — RecurringTransaction з полями amount, frequency (RRULE або enum), nextDueDate, categoryId. Фонове завдання щодня перевіряє nextDueDate <= today і створює транзакції автоматично. На iOS — BGProcessingTask, на Android — WorkManager з PeriodicWorkRequest(1, TimeUnit.DAYS). Докладніше про WorkManager — в офіційній документації.
Підводний камінь: daylight saving time. Якщо recurring транзакція має створюватися «1-го числа кожного місяця», не можна зберігати просто інтервал у секундах — потрібен Calendar API з урахуванням локалі. Помилка тут призводить до дублікатів або пропусків, що підриває довіру.
Порівняння платформ для реалізації recurring transactions
| Платформа |
Фреймворк |
Підхід до фонових завдань |
Час на реалізацію |
| iOS |
SwiftUI + Combine |
BGProcessingTask |
2-3 дні |
| Android |
Kotlin + Coroutines |
WorkManager з PeriodicWorkRequest |
2-4 дні |
Що входить в нашу роботу (deliverables)
- Проектування accounting model — вибір методології, ER-діаграми, опис граничних випадків (місяць з 28 днями, перехід року, нульовий дохід).
- Дизайн та прототипування — Figma зі станами завантаження, помилок, порожніх списків.
- Розробка — Swift/SwiftUI (iOS), Kotlin/Jetpack Compose (Android), Flutter/Dart (cross-platform).
- Інтеграції — App Store Connect, Google Play Console, TestFlight, Firebase, аналітика (Amplitude/Mixpanel).
- Тестування — unit-тести (XCTest, JUnit), UI-тести (XCUITest, Espresso), навантажувальне тестування sync.
- Документація — архітектурна схема, API-специфікація (OpenAPI), інструкція з підтримки.
- Гарантія — 12 місяців безкоштовних виправлень багів, SLA до 4 годин на критичні помилки.
YNAB рекомендує подібний підхід для утримання користувачів.
Чому варто довірити розробку нам?
Ми не просто пишемо код — ми будуємо фінансові системи. Наш досвід включає інтеграцію з банками через OpenAPI, реалізацію StoreKit 2 та Billing 6 для підписок, сертифікацію за App Store Review Guidelines (розділ 5.1 — конфіденційність). За роки присутності на ринку ми випустили 8 додатків у категорії «Фінанси» з мінімальним відтоком користувачів (Churn < 5% після 3 місяців). Кожен проект супроводжується документацією та навчанням команди клієнта.
Процес роботи
- Аналітика — інтерв'ю з користувачами, конкурентний аналіз, визначення методології.
- Проектування — модель даних, прототип, user stories.
- Розробка — спринти по 2 тижні, код-рев'ю, CI/CD.
- Тестування — ручне + автоматичне, бета-тест через TestFlight / Firebase Distribution.
- Деплой — публікація в сторах, налаштування моніторингу (Crashlytics, Sentry).
- Підтримка — гарантійне обслуговування, доопрацювання за запитом.
Орієнтири за термінами
| Функція |
Складність реалізації |
Типові терміни (тижнів) |
| Ручний ввід + категорії |
Низька |
2–4 |
| Envelope budgeting |
Середня |
3–5 |
| Recurring transactions |
Середня |
2–4 |
| Сімейний sync |
Висока |
5–8 |
| ML-прогноз витрат |
Висока |
6–10 |
| Інтеграція з банком |
Висока |
8–12 |
Вартість розраховується індивідуально — залежить від складу команди, складності інтеграцій та дизайну. Зв'яжіться з нами для оцінки вашого проекту — ми підготуємо комерційну пропозицію з потижневим планом за 2 робочі дні. Замовте розробку — отримайте консультацію інженера з архітектури вашого майбутнього додатку.
Аналітика мобільних застосунків: Firebase, Amplitude, AppsFlyer та атрибуція
Наша команда регулярно стикається з проектами, де аналітика вже «налаштована», але реальних інсайтів немає. Типовий приклад — стартап з 50k DAU: трекінг десятків подій без жодної відповіді на питання «чому користувачі не доходять до оплати». За два тижні ми побудували базову воронку і з'ясували, що 70% аудиторії відвалюється на екрані верифікації номера телефону. Після локалізації бага retention зріс на 12%. Висновок: аналітика повинна починатися з конкретних питань, а не з трекінгу всього підряд.
Чому таксономія подій — основа аналітики мобільних застосунків?
Firebase Analytics, Amplitude, Mixpanel — технічно схожі. Різниця в тому, що ви в них кладете. Типова помилка: події screen_view, button_tap_1, button_tap_2 без контексту. Через місяць ніхто не пам'ятає, що таке button_tap_2.
Правильна таксономія: об'єкт + дія + контекст. product_viewed, checkout_started, payment_completed з параметрами product_id, category, price, source. Це дозволяє будувати воронки, когортний аналіз та retention без додаткового трекінгу.
Ми фіксуємо naming convention у tracking plan — документі (Google Sheet або Amplitude Data Catalog), де описано кожну подію, її параметри та умови спрацьовування. Tracking plan синхронізується з командою аналітиків до початку розробки, а не після. Такий підхід гарантує, що через місяць дані залишаться інтерпретованими, а не перетворяться на звалище. Досвід впровадження на 50+ проектах підтверджує: при відсутності tracking plan вартість підтримки аналітики зростає у 2-3 рази за рахунок переробок.
Що обрати для аналітики мобільних застосунків: Firebase, Amplitude чи Mixpanel?
Таблиця нижче показує ключові відмінності трьох популярних платформ. Вибір залежить від бюджету, трафіку та завдань.
| Критерій |
Firebase Analytics |
Amplitude |
Mixpanel |
| Безкоштовний ліміт |
Безліміт (в рамках Spark-плану) |
До 10 млн events/міс |
До 1 тис. MTU/міс (Special) |
| Затримка даних |
До 24 годин (стандарт) |
Хвилини (real-time) |
Хвилини (real-time) |
| Воронки та когорти |
Базові воронки, обмежена кількість |
Глибокі воронки, Journeys, когорти |
Funnels, Retention, Insights |
| BigQuery-експорт |
Так (безкоштовно, сирі дані) |
Так (підписка) |
Так (Enterprise) |
| Session Replay |
Ні |
Є (iOS/Android SDK) |
Ні |
| Інтеграція з рекламою |
Google Ads (нативна) |
Через Universal Links |
Через партнерів |
Firebase Analytics — безкоштовно, глибока інтеграція з Google Ads, BigQuery-експорт для сирих даних. Обмеження: затримка даних до 24 годин, обмежені воронки. Для стартапів з Google Ads трафіком — перший вибір.
Amplitude — продуктова аналітика з акцентом на когорти та шляхи користувача. Journeys (колишній Pathfinder) показує реальні шляхи між подіями — не передбачувані воронки, а фактичні маршрути. Session Replay — запис сесій для UX-аналізу. Безкоштовний тир до 10 млн events/місяць достатній для більшості продуктів на старті.
Mixpanel — ближче до Amplitude, сильніший у сегментації в реальному часі. Insights, Funnels, Retention — базові інструменти, які закривають 90% аналітичних завдань продакта.
Більш формальні визначення цих платформ можна знайти у Wikipedia (Firebase) та Wikipedia (Amplitude).
Як вирішити проблему мультиканальної атрибуції з AppsFlyer?
Знати звідки прийшов користувач — окреме завдання. Firebase Attribution працює лише всередині Google-екосистеми. Для мультиканальної атрибуції (Facebook Ads, TikTok, Apple Search Ads, programmatic) потрібен MMP — Mobile Measurement Partner.
AppsFlyer — лідер ринку. OneLink — universal deep link, який працює на iOS та Android і коректно атрибутує встановлення з будь-якого каналу. Protect360 — вбудований захист від fraud (фейкові встановлення, click injection на Android). Adjust та Branch — конкуренти з подібним функціоналом. Branch сильний у deep linking; Adjust популярний у gaming.
Згідно з Apple, з iOS 14.5 застосунки повинні отримувати дозвіл користувача через ATT перед збором IDFA для відстеження. AppsFlyer використовує probabilistic matching (IP + user agent + timing) для цих користувачів — точність нижча, але краще ніж нічого. SKAdNetwork та Privacy Preserving Attribution надають агреговані дані від Apple із затримкою 24-72 години.
Як налаштувати crash-аналітику, щоб не пропускати баги?
Firebase Crashlytics — стандарт для crash reporting. Автоматично групує креші за стектрейсом, показує affected users %, velocity alerts при зростанні crash rate більш ніж на 10% за годину.
Важливо: символікація. На iOS .dSYM файли повинні автоматично завантажуватися при кожній збірці — через Fastlane upload_symbols_to_crashlytics або Xcode Cloud built-in. Без символів креш у Crashlytics виглядає як набір адрес пам'яті. Це трапляється частіше, ніж здається при переході на новий CI — в одному проекті з аудиторією 500k користувачів ми виявили, що 40% крешів залишалися несимволізованими через пропущений етап у CI/CD. Після автоматизації час реакції на баги скоротився з 3 годин до 15 хвилин.
Для React Native та Flutter — @sentry/react-native та sentry_flutter дають додатковий контекст: breadcrumbs, мережеві запити перед крешем, стан Redux/Provider.
Нижче — порівняння популярних інструментів crash-аналітики для вибору під свої завдання.
| Критерій |
Firebase Crashlytics |
Sentry |
Instabug |
| Безкоштовний ліміт |
Безліміт (в рамках Spark) |
5k events/міс |
250 MAU |
| Групування |
За стектрейсом + параметри |
За fingerprint |
За стектрейсом + метадані |
| Символікація |
Автоматична (через файл) |
Автоматична (через CLI) |
Автоматична |
| Velocity alerts |
Так (за % зміни) |
Так (за кількістю) |
Так (за порогом) |
| Дод. контекст |
Logs, Keys, Custom Keys |
Breadcrumbs, User, Tags |
User steps, мережеві запити |
| Ціна |
Безкоштовно (у Firebase) |
Від $26/міс (Team) |
Від $99/міс |
Налаштування оточення
Три оточення з окремими Firebase проектами: dev, staging, production. Змішувати аналітику з тестових сесій і production — поширена помилка, яка спотворює всі метрики. На iOS через GoogleService-Info.plist для кожної схеми, на Android через google-services.json у папці кожного flavor.
Терміни: базова аналітика з Firebase + Crashlytics — 3-5 днів. Повноцінний tracking plan + Amplitude/Mixpanel з воронками та когортами — 2-3 тижні. Атрибуція через AppsFlyer з deep linking та fraud protection — 1-2 тижні. Вартість розраховується індивідуально залежно від складності інтеграцій.
Що входить у нашу роботу
В рамках впровадження аналітики ми надаємо:
- Розробку та узгодження tracking plan з командами продукту та маркетингу.
- Інтеграцію SDK (Firebase, Amplitude, Mixpanel, AppsFlyer) з урахуванням вашого стеку (Swift/Kotlin/Flutter/React Native).
- Налаштування воронок, когорт, дашбордів та алертів.
- Автоматизацію символікації та завантаження .dSYM через Fastlane.
- Документацію щодо подій та параметрів.
- Навчання команди роботі з аналітичною платформою.
- Два тижні пост-релізної підтримки та коригування трекінгу.
Наш досвід — 7 років впровадження аналітики та понад 80 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.
Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.