SpentSmart
SHIPPEDA privacy-first Android UPI expense tracker with a custom Kotlin native module and no backend.
Personal project · Jan–Feb 2026 · 65 commits
THE PROBLEM
Expense trackers usually read SMS or link bank accounts. Track UPI payments without either, and keep all data on the device.
HOW IT WORKS
- A Kotlin Expo module queries PackageManager for UPI apps and launches them by package, and shares QR images through a FileProvider.
- Data lives in local storage behind an optional biometric lock. A pending-payment flow watches deep links and the clipboard, and asks the user to confirm.
SCREENSHOTS
Captured from the project's own repository. Select an image to open it full size.
ENGINEERING EVIDENCE
- Three APK releases (v1.0.0, v2.0.0, v2.01) on GitHub Releases.
- Nine phone screenshots are in the repository README.
DECISIONS & INVESTIGATIONS
No reduction is visible: the v2.0.0 and v2.01 APKs are about 9.3% larger than v1.0.0.
According to docs/UPI_FIXES_APPLIED.md, the first version never returned rawParams, so every scan fell back to a rebuilt URL.
Needs a development build (QRPaymentGenerator.tsx logs 'UpiIntent native module not available (Expo Go)').
WHAT ISN'T DONE
- No automated tests.
- Payment "verification" is a time-based confidence heuristic, not real payment status.
- Android only.
STACK
- React Native
- Expo
- TypeScript
- Kotlin



