Открытый клиент сервиса kudadengi.pro. Приложение собирает твои
траты, читая push-уведомления банков (NotificationListenerService, как это делает Zenmoney),
и показывает, куда уходят деньги.
Чтобы собирать траты, приложению нужно чувствительное разрешение — чтение уведомлений. Это разрешение, которым легко злоупотребить, поэтому мы открыли исходный код клиента: любой может убедиться сам, а не поверить на слово.
- Только чтение. Функции перевода или списания денег в коде просто нет.
- Ты управляешь тем, что уходит. Настройка приватности с тремя уровнями (
Store.analyticsLevel): Выключено — на сервер не уходит ничего; Минимум — только обезличенный агрегат (категория + сумма + день, без мерчанта и текста,Uploader.sendAgg); Нормально (по умолчанию) — при запросе разбора добавляются названия мест, чтобы совет был точным. Всё сырьё считается на телефоне; наружу уходит только итоговая сводка (Store.monthProfile). - Отключить доступ можно в любой момент — в системных настройках уведомлений.
Проверить эти утверждения проще всего по трём файлам: BankParser.kt (что вытаскиваем),
Uploader.kt (что и куда отправляем), Store.kt (что храним).
| Free | Pro | |
|---|---|---|
| Банки | один | все |
| Траты за месяц, категории | да | да |
| Разбор по категориям (все банки) | — | да |
| AI-советник: разбор трат и что сделать | — | да |
| Экспорт | — | да |
Логика тарифа и приватности — в клиенте (Store.kt: isPro, analyticsLevel, monthProfile).
Биллинг и LLM за AI-советником — закрытая часть на стороне сервиса; клиент лишь шлёт обезличенную
сводку и показывает ответ.
app/src/main/
AndroidManifest.xml NotificationListenerService + INTERNET + foreground service
java/pro/kudadengi/app/
MainActivity.kt онбординг + главный экран (UI кодом, без XML), тариф Free/Pro
NotificationListener.kt ловит уведомления банков
BankParser.kt packageName→банк, регэкспы суммы/направления/мерчанта
Categorizer.kt мерчант/текст → категория (локально)
Store.kt локальное хранилище (SharedPreferences+JSON), тариф
Uploader.kt обезличенные события воронки и агрегаты трат
KeepAliveService.kt foreground-сервис, держит процесс живым в фоне
Models.kt модель операции
res/values/ цвета/тема бренда, строки
Нужны JDK 17 и Android SDK (platform 34, build-tools 34).
./gradlew assembleDebug # APK → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk- Установить APK на Android-телефон, где стоят банковские приложения.
- Открыть, нажать «Разрешить доступ к уведомлениям», включить «Куда Деньги» в системном списке.
- Совершить покупку картой (или дождаться уведомления банка) — операция появится в ленте.
- Долгое нажатие на логотип на главном экране включает Pro для теста (пока нет биллинга).
- Парсеры push — эвристики. Форматы уведомлений у банков разные и меняются; реальные шаблоны дособираются на живых уведомлениях. Мерчант извлекается грубо.
- Только Android. iOS не даёт читать чужие уведомления — ограничение Apple.
- Хранение локальное, без шифрования — для прототипа. В планах: Room + шифрование.
- Package-имена банков — актуальные на момент написания, проверять при расширении списка.
MIT © 2026 Куда Деньги (ИП Фатыков К. Р.). Клиент открыт; серверная часть и бренд — нет.