Розроблення мобільного додатка для обліку витрат
Додаток для обліку витрат — це не бюджетування та не інвестиції. Тут головне — швидкість введення. Якщо користувачу потрібно більше трьох тапів, щоб зафіксувати, що він щойно витратив 200 рублів на каву, — він кине додаток через тиждень. Все інше (аналітика, ліміти, експорт) вторинне.
Швидкість введення як архітектурна задача
Швидкий ввід витрати треба проектувати на рівні UX та реалізації одночасно.
На iOS: віджет Home Screen через WidgetKit з AppIntent (iOS 16+) відкриває шторку введення без повного запуску додатка. INAddTaskIntent / kastомний Shortcut дозволяє вносити витрати голосом через Siri. Жива активність в Dynamic Island показує баланс дня без розблокування екрана.
На Android: Tile у Quick Settings через TileService — один свайп та тап, додаток не відкривається повністю. Floating widget поверх інших додатків через WindowManager (потрібен дозвіл SYSTEM_ALERT_WINDOW) — спірно з точки зору UX, але деякі користувачі обожнюють.
Нумпад для суми — kastомний, не системний: системна клавіатура додає 200–300 мс затримки на показ. Автофокус на поле суми, категорія по дефолту — «остання використана», оцінка за геолокацією (Coffee shop рядом → категорія «їжа»).
Категорії та ліміти
Категорії з іконками та кольорами, вкладеність максимум один рівень (підкатегорії). Місячні ліміти на категорію — зберігаємо як окрему сутність BudgetLimit з categoryId, amount, month. При перевищенні 80% ліміту — локальне сповіщення. Розрахунок прогресу — тільки при відкритті відповідного екрана плюс фоновий пересчет через BGAppRefreshTask раз на годину.
Аналітика та експорт
Графіки: круговий графік за категоріями за період, стовпчастий графік за днями. На Flutter — fl_chart, на iOS нативно — Swift Charts (iOS 16+). Не тягни важкі бібліотеки для двох простих графіків.
Експорт у CSV та PDF. CSV — тривіально. PDF через PDFKit (iOS) або PdfDocument (Android) — рендеримо таблицю витрат з підсумками. Важливо: користувач повинен мати змогу вибрати період та набір категорій перед експортом.
Синк та мульти-пристрої
Якщо потрібен синк — Firebase Realtime Database або Firestore з merge-логікою. Головна ловушка: конфлікти при одночасному записі з двох пристроїв. Стратегія: last-write-wins за updatedAt timestamp для простих випадків, або CRDT для складних. Для більшості expense-трекерів достатньо last-write-wins.
Процес роботи
Уточнюємо: потрібна ли синхронізація між пристроями, один користувач або сімейний аккаунт, потрібен ли імпорт із банківських виписок, цільові платформи. Проектуємо модель даних з розрахунком на масштаб (рік витрат = кілька тисяч записів, це трохи).
Орієнтири за термінами
Базовий трекер з швидким вводом, категоріями, ліміт ами та експортом CSV — 3–5 тижнів. З віджетами, PDF-звітами, CloudKit/Firebase sync та графіками — 7–10 тижнів. Вартість розраховується індивідуально.







