Standalone smart budgeting app that tracks expenses, categorizes transactions, and delivers AI-powered spending insights via Zelara Core — all running locally on your device.
Bundle ID: ai.zelara.finance
React Native: 0.76.6 (New Architecture)
- Expense Tracking — add, edit, and categorize transactions with a local SQLite database
- Auto-Categorization — keyword-based engine (offline); upgrades to DistilBERT via Zelara Core when connected
- Budget Tracking — set monthly category limits, track spend against budgets
- Biometric Lock — Face ID / fingerprint prompt after the app has stayed in the background for a short period, with a grace window to avoid repeated challenges during brief interruptions
- SMS Import (Phase 4) — parse bank SMS messages into transaction candidates
- Report Import (Phase 4) — import OFX, CSV, PDF, and XLSX bank statements
- Receipt OCR (Phase 5) — photograph a receipt and have Zelara Core extract line items
- QR Pairing — scan Core's pairing QR to establish a TLS WebSocket link
- BLE Auto-Discovery — reconnects automatically when Core is on the same local network
- Node.js 20+
- JDK 17
- Android SDK (API 33+) with
adbon yourPATH - A physical Android device or emulator connected via USB with USB debugging enabled
The easiest way — no build toolchain needed.
- Download
zelara-finance.apkfrom the latest release. - Install directly to your device:
adb install zelara-finance.apkgit clone --recurse-submodules https://github.com/zelara-ai/core.git
cd core/apps/finance-mobileOr if you already have the repo:
git submodule update --init apps/finance-mobile
cd apps/finance-mobile@zelara/finance must be compiled before npm install — the file: dependency resolves to its dist/ output:
cd ../../src/packages
npm install
npm run build -w @zelara/shared
npm run build -w @zelara/skill-tree
npm run build -w @zelara/state
npm run build -w @zelara/device-linking
npm run build -w @zelara/finance
cd ../../apps/finance-mobilenpm install --legacy-peer-deps
--legacy-peer-depsis still needed here because the current navigation package versions have peer-version drift during install. The app now includes Expo Modules runtime support becauseexpo-local-authenticationandexpo-sqlitedepend on it.
Plug in your Android device via USB and verify it is visible:
adb devicesMetro runs on port 8081. Forward it from your device to your machine:
adb reverse tcp:8081 tcp:8081Re-run this after every USB reconnect or device reboot.
In a dedicated terminal, keep this running for the duration of development:
npx react-native startIn a second terminal:
npx react-native run-androidThis compiles the debug APK, installs it via adb, and launches the app. Metro hot-reload is active while the bundler is running.
Use this to produce the same APK as CI without pushing a tag.
cd android
./gradlew assembleReleaseOutput: android/app/build/outputs/apk/release/app-release.apk
adb install app/build/outputs/apk/release/app-release.apkThe release build does not use Metro — no bundler or port forwarding needed.
Part of the Zelara monorepo (apps/finance-mobile/). Shared TypeScript packages live in src/packages/ and are resolved by Metro via watchFolders:
@zelara/shared— common types@zelara/finance—FinanceRepositoryabstract class, SQL schema,CategorizationEngine,BudgetEngine,ForecastEngine@zelara/device-linking— WebSocket/TLS connection primitives@zelara/state— local state management@zelara/skill-tree— skill tree definitions
Requires Zelara Core running on desktop for OCR and AI categorization features. The app is fully functional offline; connecting to Core upgrades categorization from keyword-based to DistilBERT and enables receipt OCR.