How geoffreymainadigital/gmdparser works
GMDParser is an Android-first personal-finance app that turns M-PESA SMS messages into reviewed, user-confirmed transactions, then sends them through a Vercel API gateway to a Google Apps Script backend and Google Sheets ledger. Android also supports financial dashboards, history, taxonomy, savings, accounts, debts, goals, PIN protection, themes, and reminders; the web portal provides an additional interface. Backend implementation files are absent from the supplied tree, so Apps Script and Sheets are represented as documented external services. Some subsystem links are based on README statements rather than sampled implementation.
Main entry points: TransactionRepository.kt Transaction repository · MainActivity.kt App navigation · api Vercel API routes · ReviewConfirmScreen.kt Review and confirm
Components 23
Capture and review
- SMS receiver
android/app/src/main/java/com/gmdparser/receiver/SmsReceiver.kt - M-PESA parser
android/app/src/main/java/com/gmdparser/parser/MpesaParser.kt - Review and confirm
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - SMS scan dialog
android/app/src/main/java/com/gmdparser/ui/components/SmsScanDialog.kt
Android finance app
- Transaction repository
android/app/src/main/java/com/gmdparser/data/repository/TransactionRepository.kt - Transaction model
android/app/src/main/java/com/gmdparser/data/model/Transaction.kt - App navigation
android/app/src/main/java/com/gmdparser/ui/MainActivity.kt - Dashboard
android/app/src/main/java/com/gmdparser/ui/screens/DashboardScreen.kt - Finance screens
android/app/src/main/java/com/gmdparser/ui/screens - Taxonomy repository
android/app/src/main/java/com/gmdparser/data/repository/TaxonomyRepository.kt - Network client
android/app/src/main/java/com/gmdparser/data/network/NetworkClient.kt - API service
android/app/src/main/java/com/gmdparser/data/network/ApiService.kt - App preferences
android/app/src/main/java/com/gmdparser/util/AppPreferences.kt - PIN lock
android/app/src/main/java/com/gmdparser/ui/screens/PinLockScreen.kt - Theme manager
android/app/src/main/java/com/gmdparser/ui/theme/ThemeManager.kt - Review reminders
android/app/src/main/java/com/gmdparser/util/ReviewReminderManager.kt
Web gateway
- Web portal
public/app.js - Vercel API routes
web/api - API auth guard
web/api/auth-guard.js
Financial backend
- Apps Script backend
- Google Sheets ledger
Other components
- M-PESA SMS
- Android OS
Connections 26
- M-PESA SMS → SMS receiver: arrives at
README.md - SMS receiver → M-PESA parser: parses message
- SMS scan dialog → M-PESA parser: scans message
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Review and confirm → M-PESA parser: parses entered SMS
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Review and confirm → Transaction repository: stages transaction
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Review and confirm → Transaction repository: submits confirmation
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Transaction repository → Transaction model: stores transaction data
android/app/src/main/java/com/gmdparser/data/repository/TransactionRepository.kt - App navigation → Dashboard: routes to
android/app/src/main/java/com/gmdparser/ui/MainActivity.kt - App navigation → Finance screens: routes to
android/app/src/main/java/com/gmdparser/ui/MainActivity.kt - App navigation → PIN lock: gates app access
android/app/src/main/java/com/gmdparser/ui/MainActivity.kt - App navigation → Transaction repository: initializes and fetches
android/app/src/main/java/com/gmdparser/ui/MainActivity.kt - Dashboard → Transaction repository: reads financial data
android/app/src/main/java/com/gmdparser/ui/screens/DashboardScreen.kt - Finance screens → Transaction repository: uses transaction data
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Finance screens → Taxonomy repository: uses taxonomy
android/app/src/main/java/com/gmdparser/ui/screens/ReviewConfirmScreen.kt - Transaction repository → API service: submits API requests
android/app/src/main/java/com/gmdparser/data/repository/TransactionRepository.kt - Transaction repository → Network client: uses API client
android/app/src/main/java/com/gmdparser/data/repository/TransactionRepository.kt - Taxonomy repository → Network client: fetches taxonomy
android/app/src/main/java/com/gmdparser/data/repository/TaxonomyRepository.kt - Network client → API service: provides service
android/app/src/main/java/com/gmdparser/data/network/NetworkClient.kt - API service → Vercel API routes: calls HTTPS endpoints
android/app/src/main/java/com/gmdparser/data/network/ApiService.kt - Web portal → Vercel API routes: uses API
- Vercel API routes → API auth guard: checks authorization
web/api/taxonomy.js - Vercel API routes → Apps Script backend: proxies requests
README.md - Apps Script backend → Google Sheets ledger: validates and writes
README.md - PIN lock → App preferences: uses stored settings
android/app/src/main/java/com/gmdparser/ui/screens/PinLockScreen.kt - Theme manager → App preferences: reads and saves theme
android/app/src/main/java/com/gmdparser/ui/theme/ThemeManager.kt - Review reminders → Android OS: schedules notifications