Skip to content

Repository files navigation

Kharcha

Kharcha

India's Zero-Friction UPI Expense Tracker for Android.

Latest Release License Website


Kharcha is a native Android expense tracker built for India's UPI ecosystem. Every payment from GPay, PhonePe, Paytm, or CRED is captured, categorized, and added to your ledger automatically — no manual entry.

Kotlin + Rust, fully offline, zero cloud, zero AI. Parsing and dedupe run in a deterministic Rust core (kharcha-core); the Compose app only stores what Rust decides. Your money data never leaves the device.

by Akash Priyadarshi · github.com/AkashPriyadarshii · akashpriyadarshi.vercel.app

🌐 Website: kharcha.github.io

Why Kharcha

Manual logging is friction; cloud sync is a trust tax. Kharcha kills both:

  • Every UPI debit auto-appears — SMS + push notifications, parsed in Rust.
  • No doubles. Triple-signal dedupe: ref + 5-min window + content hash.
  • Zero AI. Categorization is a local rule map. Deterministic, auditable.
  • Offline by design. No internet permission in the product. No account, no Supabase, no Firebase.

📲 Download

Latest release v0.1.0
APK kharcha-armv8a-release.apk (~29 MB)
Requirements Android 12+ (arm64)

Install: build or grab the APK → open it → allow "Install unknown apps" → done.

✨ Features

  • Automated UPI & SMS Capture — notifications + SMS banking alerts, multi-part join, real-time.
  • Smart Spam Filter — OTPs, recharge promos, collect requests, failed/pending alerts rejected in Rust before parsing.
  • Auto Wallets — bank/account masks in messages auto-create wallets; message balance updates them.
  • Monthly Budgets — per-category caps with progress bars, over-limit turns red.
  • Rules Engine (zero AI) — normalize + longest-pattern match, learned rules beat builtin. Teach a category from any transaction; it remembers the merchant.
  • 220 merchant logos — word-boundary match, longest key wins. Emoji fallback for the rest.
  • Rolling spend hero — 300ms animated ticker on every new capture.
  • Home widget — month spend + 1-tap log, refreshed on each insert.
  • Shareable month cards — PNG export via system share sheet.
  • Manual entry — quick-add for anything the phone can't see.
  • CSV export — to Downloads, PII-hashable.
  • Biometric app lock — fingerprint/face gate on launch.
  • Batch reparse — SMS backlog drain in one call via parse_captures.

🛠 Tech Stack

Concern Choice
Core engine Rust (kharcha-core), UniFFI bindings, 59/59 tests (24 unit + 35 parity)
App Kotlin + Jetpack Compose, Android 12+ (minSdk 32)
Local DB Room (SQLite) — the only store
Native JNA, BiometricPrompt, NotificationListenerService
Network none

🏗 Layout

kharcha-core/   Rust: parser, dedupe, categorize, money, filter, split (crate + UniFFI)
android-app/    Kotlin Compose: screens, Room, capture funnel, build → APK
docs/           state, design, plan, handoff, changelog

📝 Notes

  • Device-tested (Realme RMX5061, Android 16): live SMS_RECEIVED insert, auto-learn, dedupe, notify, widget refresh, share PNG verified on-device.
  • Self-send SIM-to-SIM never broadcasts to third-party apps on ColorOS — live path needs a genuine bank sender.
  • Auto-update: release tag + kharcha-armv8a-release.apk asset, version bump gates it.

📄 License & Legal

Source-available. All rights reserved. Public for viewing only — no use, reproduction, or derivative works permitted. See LICENSE for full terms.

About

Kharcha, India-first UPI expense tracker for Android. Auto-captures bank SMS plus UPI notifications via on-device Rust parser, 220 merchant logos, budgets, reports, shareable cards. Native Kotlin plus Jetpack Compose, Room, offline-first.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages