Spend Guard
A full-featured personal finance tracking Android app. Log every shilling in - and out - track budgets, bills, and savings goals, all with offline support and biometric security.
The Big Picture
Spend Guard was built to solve a simple but persistent problem: most Kenyans lack a private, offline-first tool for tracking personal finances. Banking apps show balances - they don't help you understand where your money actually goes. Spend Guard fills that gap with a purpose-built mobile app that puts the user fully in control of their financial picture.
What We Set Out to Solve
Managing personal finances in Kenya typically means juggling M-Pesa statements, bank app screenshots, and mental notes. The pain points were clear:
- No single place to see income, expenses, bills, and goals together.
- Finance apps that require constant internet - useless in low-connectivity areas.
- Generic budget tools that don't reflect Kenyan income patterns (gig work, daily pay, etc.).
- Sensitive financial data stored insecurely or shared with third-party advertisers.
How We Built It
The core design principle was offline-first, privacy-first. Every architectural decision flowed from that.
Form-driven architecture
All 7 finance modules are driven by a single moduleConfig.js data file. Adding a new record type means defining it once - the form renderer, validation, and CRUD layer all derive from it automatically.
Offline-first sync
NetworkContext tracks connectivity and queues all mutations locally in AsyncStorage when offline. On reconnect, queued operations flush to the server in order - no data loss, no duplicate records.
Layered security
Three independent security layers: email + OTP authentication, optional 4-digit PIN lock (with too-many-attempts auto-logout), and biometric unlock via Expo's local authentication API.
Smart contextual forms
Fields use dependsOn conditions (e.g. frequency only appears when income is recurring), inline banners prompt users to create required records before linking them, and KES prefix shows on all money inputs.
Stack & Tooling
- React Native (Expo SDK 55)
- NativeWind v4
- React Navigation
- AsyncStorage
- Expo Local Auth
- Expo Notifications
- Node.js
- Prisma ORM
- PostgreSQL
- JWT Auth
- bcrypt
- Firebase Cloud Messaging
- EAS Build (Expo)
- Firebase Crashlytics
- HTTPS/TLS everywhere
- Encrypted DB fields
- Offline queue & sync
What We Delivered
7 fully functional finance modules - expenses, income, budgets, budget categories, bills, savings goals, and accounts - all linked through smart relational dropdowns.
Complete offline CRUD with automatic background sync - users can track spending with zero connectivity and trust their data will sync when they're back online.
End-to-end encrypted financial records with three independent security layers protecting access to the app.
Spending insights and analytics dashboard aggregating records into actionable summaries and budget health indicators.
Push notification system for budget breach alerts and bill reminders, with full user control over opt-in.
Google Play Store submission with a compliant privacy policy, terms and conditions, and data safety section.
What This Project Reinforced
Offline-first pays off
Building sync into the architecture from day one - rather than bolting it on - meant the offline queue and conflict resolution worked cleanly without hacks.
Config-driven forms scale
A single moduleConfig.js as the source of truth for all forms eliminated drift between form UI, validation, and API layer. Adding a new module took minutes, not hours.
UX details are the product
Small details - contextual field visibility, KES prefix on inputs, tappable banners for missing relations - made the difference between an app that feels finished and one that doesn't.
Security must be layered
One auth method is never enough for financial data. Combining OTP, PIN, and biometrics lets users choose their comfort level while keeping the default experience secure.
App policies are live
Privacy policy and terms & conditions are published and linked from the app.
Have a mobile app idea?
We build offline-first, production-ready mobile apps tailored to real-world usage patterns.
Let's Build It