Розроблення мобільного додатка для обліку персональних фінансів
Додатки для особистих фінансів поєднують кілька технічно нетривіальних завдань: банківська інтеграція з нестандартними API, робота з кількома валютами та конвертацією, коректна категоризація операцій, все це в контексті жорстких вимог до безпеки даних. Додай сюди iCloud/Google Drive синк — і отримаєш проект, який «простим» не назвеш.
Банківська інтеграція
Найскладніша та неоднорідна частина. Три основних підходи:
Open Banking / PSD2 (Європа). Стандартизовані API: Nordigen (тепер GoCardless), Salt Edge, TrueLayer. Авторизація через OAuth2 з redirect назад у додаток через Deep Link (ASWebAuthenticationSession на iOS, Custom Tabs на Android). Операції приходять у форматі JSON з полями creditorName, transactionAmount, bookingDate. Звучить просто — але кожен банк інтерпретує стандарт по-своєму: у одних сума приходить як рядок, у інших — як число; у деяких pending-операції дублюються після підтвердження.
Імпорт виписок (CSV/OFX/MT940). Fallback для банків без API. Парсинг MT940 — окрема біль: формат наполовину стандартизований, наполовину kastомізований кожним банком. Для OFX використовуємо готові бібліотеки, для CSV — пишемо налаштовуваний парсер з маппінгом колонок.
Ручний ввід. Завжди потрібен як основа. Швидкий ввід з віджетом на екрані блокування (iOS 16+ WidgetKit з intent), або шорткат в Dynamic Island.
Категоризація операцій
Правильна авто-категоризація через ML — це не «настроїмо ChatGPT і готово». Добре працює on-device модель: навчений класифікатор по creditorName та transactionAmount. На iOS — CoreML з kastомною моделлю, навченою на розмічених операціях. На Android — TensorFlow Lite. Головне — fallback через rules-engine: якщо ML дав низьку впевненість (< 0.7), пропонуємо користувачу вибрати категорію та оновлюємо локальну історію класифікації.
Мультивалютність
Зберігати суми в minor units (цілих числах), не в float. 10.99 USD = 1099 cents. Иначе втратиш центи при накопленні операцій через погрішку float. Курси валют — кешуємо, оновлюємо через ExchangeRates API або Fixer.io. Конвертація для звітів — завжди за курсом на дату операції, не за поточним.
Безпека
Дані про операції шифруються в базі через SQLCipher (React Native / Flutter) або через NSFileProtection.completeUnlessOpen (iOS). Biometric lock через LocalAuthentication / BiometricPrompt — обов'язково. Токени банківських API зберігаються в Keychain (iOS) / Android Keystore, ніколи в UserDefaults або SharedPreferences.
Процес роботи
Починаємо з аудиту: які банки потрібно інтегрувати, цільові країни (це визначає Open Banking provider), потрібна ли мультивалюта, модель монетизації. Проектуємо схему даних, особливо accounting model: подвійна запис або спрощена. Розробляємо, тестуємо на реальних банківських аккаунтах у sandbox-режимі, потім на продуктивних з реальними операціями.
Орієнтири за термінами
Ручний облік з категоріями, бюджетами та базовою аналітикою — 5–8 тижнів. Повний продукт з Open Banking інтеграцією, ML-категоризацією, мультивалютою, віджетами та експортом — 16–24 тижні. Вартість розраховується індивідуально після аналізу вимог.
| Сценарій | Орієнтовний термін |
|---|---|
| Ручний облік, одна валюта, базові звіти | 5–8 тижнів |
| + Імпорт CSV/OFX | +2–3 тижні |
| + Open Banking інтеграція (1–2 банка) | +4–6 тижнів |
| + ML-категоризація on-device | +2–4 тижні |
| + Віджети, шорткати, синк | +3–5 тижнів |







