Skip to content

zelara-ai/finance-mobile

Repository files navigation

Zelara Finance

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)

Features

  • 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

Prerequisites

  • Node.js 20+
  • JDK 17
  • Android SDK (API 33+) with adb on your PATH
  • A physical Android device or emulator connected via USB with USB debugging enabled

Install from Latest Release

The easiest way — no build toolchain needed.

  1. Download zelara-finance.apk from the latest release.
  2. Install directly to your device:
adb install zelara-finance.apk

Development (Debug) Build

1. Clone (as part of the core monorepo)

git clone --recurse-submodules https://github.com/zelara-ai/core.git
cd core/apps/finance-mobile

Or if you already have the repo:

git submodule update --init apps/finance-mobile
cd apps/finance-mobile

2. Build shared packages

@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-mobile

3. Install dependencies

npm install --legacy-peer-deps

--legacy-peer-deps is still needed here because the current navigation package versions have peer-version drift during install. The app now includes Expo Modules runtime support because expo-local-authentication and expo-sqlite depend on it.

4. Connect your device

Plug in your Android device via USB and verify it is visible:

adb devices

5. Reroute Metro port (USB debugging)

Metro runs on port 8081. Forward it from your device to your machine:

adb reverse tcp:8081 tcp:8081

Re-run this after every USB reconnect or device reboot.

6. Start Metro bundler

In a dedicated terminal, keep this running for the duration of development:

npx react-native start

7. Build and install debug APK

In a second terminal:

npx react-native run-android

This compiles the debug APK, installs it via adb, and launches the app. Metro hot-reload is active while the bundler is running.


Release Build (local)

Use this to produce the same APK as CI without pushing a tag.

1. Build the release APK

cd android
./gradlew assembleRelease

Output: android/app/build/outputs/apk/release/app-release.apk

2. Install to device

adb install app/build/outputs/apk/release/app-release.apk

The release build does not use Metro — no bundler or port forwarding needed.


Architecture

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/financeFinanceRepository abstract 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.

About

No description, website, or topics provided.

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors