Розробка мобільного додатку для планування бюджету
Відзначимо: коли користувач відкриває бюджетний додаток, він очікує не просто історію «скільки витратив учора». Йому важливо зрозуміти: «Чи зможу я купити квартиру через 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 робочі дні. Замовте розробку — отримайте консультацію інженера з архітектури вашого майбутнього додатку.







