Back to portfolio

Ad-free Android · Finance · com.michael.insightlyspend

InsightlySpend ad-free Android app icon

InsightlySpend: Offline Expense and Budget Tracker

Track income, expenses, budgets, receipts, and spending insights locally on Android. Export CSV or PDF and protect data with biometric lock—without ads.

Completely ad-free — no ads, no trackers, no sponsored clutter.

Ad-free Android app

What is InsightlySpend?

InsightlySpend is an ad-free, local-first Android personal finance app for tracking spending, budgets, insights, and receipt photos with Room storage and optional biometric lock.

Ad-free advantage: Completely ad-free — no ads, no trackers, no sponsored clutter. MichaelSam94 apps are built without banner ads, interstitial ads, or video ad interruptions.

Key capabilities

  • Home dashboard with balance and daily spend charts
  • Searchable ledger with swipe delete/duplicate
  • On-device insights and category breakdowns
  • Receipt vault and recurring rules
  • CSV/PDF export with no ads

Frequently asked questions

Is InsightlySpend free of ads?

Yes. InsightlySpend is completely ad-free so your finance dashboard is not filled with sponsored products.

Where is my finance data stored?

Transactions, accounts, categories, and recurring rules live in a local Room database on your device.

Can I export spending reports?

Yes. Settings include CSV and PDF export via the Android share sheet for backups and summaries.

InsightlySpend is an ad-free, local-first Android personal finance app for tracking spending, budgets, insights, and receipt photos with Room storage and optional biometric lock.

Ad-free: Completely ad-free — no ads, no trackers, no sponsored clutter.

A local-first personal finance app for Android. Data is stored in Room; lists and summaries use observed queries so changes propagate across tabs when you add, remove, or duplicate transactions.

The bottom navigation has six sections: Home, Ledger, Insights, Budget, Vault (receipts), and Settings.

*GIF cycles through main tabs; regenerate after UI changes with python3 scripts/generate_readme_gif.py (requires Pillow).*

---

Architecture

The codebase follows a layered structure under app/src/main/java/com/michael/insightlyspend/:

LayerRole
Presentation (presentation/)Jetpack Compose screens, ViewModels (StateFlow / coroutines), navigation (Navigation Compose).
Domain (domain/)Use cases, repository interfaces, and domain models shared by UI and data.
Data (data/)Room (DAOs, entities, DB), repository implementations, mappers, DataStore preferences, WorkManager workers, ML/adapters for Insights.

Dependency injection uses Hilt (@AndroidEntryPoint, @HiltViewModel, modules under di/). Background work (e.g. recurring posting) uses WorkManager with Hilt worker integration.

Navigation: single-activity, `MainShell` hosts a bottom `NavHost` with typed routes (AppRoutes) and optional deep links (insightlyspend://nav/...) for tooling (e.g. Play Store screenshots).

Startup: MainActivity applies locale/theme; optional BiometricGate wraps the main shell when lock is enabled.

---

Libraries

Primary dependencies (see gradle/libs.versions.toml and app/build.gradle.kts):

AreaLibraries
UIJetpack Compose (BOM), Material 3, Activity Compose, material-icons-extended
ArchitectureLifecycle (runtime, ViewModel, Compose integration), Kotlin Coroutines (Android)
NavigationNavigation Compose, Hilt Navigation Compose
DIDagger Hilt (with KSP for Hilt compiler)
PersistenceRoom (runtime, KTX, KSP compiler)
PreferencesDatastore Preferences
BackgroundWorkManager (+ Hilt Work)
Security / UXBiometric
ML (Insights)LiteRT (litert, litert-api) for optional on-device inference
InteropAppCompat, Fragment KTX (where needed for delegates / legacy APIs)

Testing: JUnit, AndroidX JUnit, Espresso, Compose UI Test.

---

Home (Dashboard)

Purpose: High-level snapshot of your finances and a shortcut to add a transaction.

UI elementWhat it does
Overview cardTotal balance — sum of all wallet (account) balances. Income / Spend — this month’s total income vs total expenses.
Budget progress (if you have category budgets)Linear bar — spend vs total monthly budget cap. “Spent X of Y” — numeric comparison.
Daily spending (7 days)Line chart of expense totals per day for the last seven calendar days.
Recent transactionsUp to five latest rows (category, note, amount). Tapping the FAB is the main way to add more; the list updates when the database changes.
Floating action button (+)Opens Quick add (see below).

---

Quick add (bottom sheet)

Opened from the Home FAB. Creates a new transaction in Room and updates account balance.

Field / controlWhat it does
AmountTransaction amount (decimal).
CategoryPicker of all categories; label follows your app language (English/Arabic names when set).
WalletAccount to book the transaction against (affects total balance).
IncomeIf on, the line is treated as income; if off, as spending.
Cash paymentIf on, payment method is cash; if off, card.
Recurring templateMarks the row for recurring/repeat logic where supported.
Debt / lendingStandard / I owe / Owed to me — how the amount relates to debt tracking.
NoteOptional text (searchable from the ledger).
Choose from gallery / Take photoGallery opens the system photo picker (images only). Take photo launches the device camera and saves into app cache via FileProvider; the URI is stored on the transaction so it appears under Vault. Remove image clears the selection before save.
SaveInserts the transaction (with optional receipt URI) and closes the sheet.

---

Ledger

Purpose: Full searchable list of transactions with filters and swipe actions.

UI elementWhat it does
Search notesFilters rows whose note contains the text (case-insensitive).
Cash onlyWhen selected, only cash payment-method transactions.
This monthRestricts to start of current month → end of current month (and can stack with cash filter).
Clear filtersRemoves date range and payment filters (search is separate).
Day group headers“Today”, “Yesterday”, or a calendar date; rows are grouped by day.
Each cardCategory icon, category name (localized), note, time, and signed amount (green + income, red − spend).
Swipe end → startDelete that transaction (updates balance).
Swipe start → endDuplicate — creates a new row with the same details and current time; original row stays.

The ledger is driven by a Room `Flow`, so it stays in sync with the database.

---

Insights (Analytics)

Purpose: On-device analytics: forecast, month comparison, category mix, and simple anomaly hints.

SectionWhat it does
TitleScreen heading.
Predictive forecastEstimated month-end spend, optional confidence range; method name may reflect linear regression and/or a bundled ML model.
Month comparisonThis month vs last month spend, and percent change when available.
Category breakdownPie and bar charts of share of spending by category (for the reporting window the engine uses).
Anomaly hintsShort bullet lines with a z-score-style stat for unusual days/categories, when the report includes any.

This screen is built from a computed report; pull-to-refresh or reopening the tab refreshes it (it is not the same live Flow pipeline as Home, unless you extend it).

---

Budget

Purpose: See per-category monthly budgets that you have set, with spend vs limit; add or manage those categories from here.

UI elementWhat it does
Title + hintExplains that alerts can fire around high usage.
Loading / errorStates while data loads or if something fails.
Each category cardName (localized), Remaining, Spent X of Y, progress bar. Can highlight when past a threshold.
Edit (pencil)Opens a sheet: English/Arabic names (per language rules), monthly budget for that category; Save updates Room.
Delete (bin)Only if more than one category exists in the app. Confirms that transactions move to another category and recurring rules for that category are removed.
FAB (+)New budget category — bilingual names, monthly budget amount, creates the category with a limit so it appears here.

Only categories that have a monthly budget limit appear as rows on this tab.

---

Vault (Receipts)

Purpose: Grid of transactions that have an attachment image (receipt photo). Attach images when creating a transaction via Home → Quick add → Choose from gallery or Take photo; those rows show up here automatically.

UI elementWhat it does
Title + hintDescribes storing image URIs on transactions in the database.
Each tileThumbnail of the image (or Attachment placeholder if the URI cannot be loaded), category, optional note.

---

Settings

Purpose: Categories and recurring rules, app preferences, security, and exports.

Categories

UI elementWhat it does
Section title“Categories” — manage all categories.
Add categoryOpens sheet with English and Arabic names (required/optional rules follow interface language).
Each rowCategory label; edit opens the same bilingual editor; delete (if not the last category) merges transactions and clears recurring rules for that category (with confirmation).

Recurring transactions

UI elementWhat it does
Add ruleOpens editor for a monthly recurring rule.
Each rule cardShows category, amount, day of month, wallet, optional note; edit / delete.
Rule editor fieldsAmount, category, wallet, day (1–28), income, cash vs card, debt mode, note, Save. Saving enqueues a one-time background job so a charge can post soon if today’s calendar day matches the rule’s day (once per month). Daily periodic work also runs as a backup. Posted rows appear on Home and Ledger like any other transaction (Room flows).

Rest of Settings

UI elementWhat it does
CurrencyChips (USD, EUR, GBP, AED, SAR, EGP, JPY, INR, …) — display/formatting for amounts.
LanguageSystem, English, or Arabic — UI strings and category/name picking behavior.
ThemeSystem, Light, or Dark.
Biometric lockWhen enabled, unlocking uses device biometrics before showing the app (see startup gate).
Export CSV / Export PDFGenerates files and opens the Android share sheet so you can save or send backups/summaries.

---

Startup & theme

  • MainActivity applies language (via AppCompatDelegate) and Compose theme from saved preferences.
  • If biometric lock is on, BiometricGate asks you to authenticate before MainShell (tabs) is shown.

---

Data flow (single source of truth)

  • Transactions, accounts, categories, recurring rules live in Room.
  • Home summary reacts to database changes via observed flows (transactions, accounts, categories); collectors use eager sharing so updates still arrive when other tabs were foreground (e.g. recurring worker inserts a row).
  • Ledger observes filtered transactions as a Flow (same eager behavior).
  • Budget and Categories sections observe categories / budget calculations as appropriate after writes.

For questions about building or extending the project, refer to build.gradle files and the package layout under app/src/main/java/com/michael/insightlyspend/.

Micro Budgeting ad-free Android app iconFinance
Micro Budgeting

Ad-free offline budgeting app for Android. Track expenses, category budgets, charts, and encrypted backups — no ads, no bank login, no internet permission.

com.michael.microbudgeting
Subtrackr ad-free Android app iconFinance
Subtrackr

Ad-free subscription tracker for Android. Monitor recurring payments, renewals, and monthly costs in one dashboard — no ads interrupting your bill overview.

com.aistudio.subtrackr
AuraSound ad-free Android app iconAudio
AuraSound

Ad-free offline ambient sound mixer for Android. Layer focus, nature, ambient, and sleep loops with volume controls, presets, and a sleep timer — no ads, no streaming account.

com.michael.aurasound
BLE Finder ad-free Android app iconDeveloper
BLE Finder

Ad-free BLE scanner for Android. Find nearby Bluetooth Low Energy devices with RSSI radar, hot/cold proximity, and optional audio pings — no ads while you track peripherals.

com.michael.blefinder
Bulk QR & Barcode Suite ad-free Android app iconScanner
Bulk QR & Barcode Suite

Ad-free bulk QR and barcode scanner for Android. High-speed batch scanning, CSV/Excel exports, and branded logo QR generation — no ads, offline-first inventory tools.

com.michael.bulkqrscanner
ClearVoice AI ad-free Android app iconAI
ClearVoice AI

Ad-free on-device speech enhancer for Android. Isolate vocals, reduce echo and static, batch-process audio, and use live loopback — no ads, no cloud audio uploads.

com.michael.clearvoiceai
ClipVault ad-free Android app iconProductivity
ClipVault

Ad-free privacy clipboard manager for Android. Encrypted local clipboard history, regex triggers, and offline text transforms — no ads, no internet permission, no cloud sync.

com.michael.clipvault
DevPocket ad-free Android app iconDeveloper
DevPocket

Ad-free offline developer utilities for Android: code workspace, JSON/XML formatters, regex playground, JS sandbox, and reference docs — no ads, no telemetry, on-device.

com.michael.devpocket

All ad-free Android app names

Complete index of completely ad-free Android apps by Michael Samuel Naeem on Google Play and GitHub — utility, privacy, productivity, developer, media, finance, and device tools with no ads. Completely ad-free — no ads, no trackers, no sponsored clutter. Every listed Android app is published without ads. Search engines can discover each exact product name, package, marketplace listing, and source page from this index.

  • AuraSound ad-free · Audio · com.michael.aurasound · ad-free ambient sound mixer Android
  • BLE Finder ad-free · Developer · com.michael.blefinder · ad-free BLE scanner Android
  • Bulk QR & Barcode Suite ad-free · Scanner · com.michael.bulkqrscanner · ad-free bulk QR barcode scanner
  • ClearVoice AI ad-free · AI · com.michael.clearvoiceai · ad-free noise reduction Android
  • ClipVault ad-free · Productivity · com.michael.clipvault · ad-free clipboard manager Android
  • DevPocket ad-free · Developer · com.michael.devpocket · ad-free developer toolkit Android
  • Doc Scanner Vectorizer ad-free · Document · com.michael.docscannervectorizer · ad-free document scanner Android
  • EdgeFlow ad-free · Utility · com.michael.edgeflow · ad-free edge gestures Android
  • FolderFlow ad-free · Productivity · com.michael.folderflow · ad-free app organizer Android
  • FrozenDroid ad-free · Utility · com.michael.frozendroid · ad-free app freezer Android Shizuku
  • InsightlySpend ad-free · Finance · com.michael.insightlyspend · ad-free personal finance Android
  • Micro Budgeting ad-free · Finance · com.michael.microbudgeting · ad-free offline budget app Android
  • NotchCommand ad-free · Utility · com.michael.notchcommand · ad-free notch shortcuts Android
  • PDF Toolkit ad-free · Document · com.michael.pdftoolkit · ad-free PDF toolkit Android
  • Photo Optimizer ad-free · Media · com.michael.photo.optimizer · ad-free photo compressor Android
  • PrivAI ad-free · AI · com.michael.privai · ad-free on-device AI notes OCR
  • SensorScope ad-free · Developer · com.michael.sensorscope · ad-free Android sensor diagnostics
  • Smooth-Mo ad-free · Utility · com.michael.smoothmo · ad-free slow motion video Android
  • StoreClear ad-free · Utility · com.michael.storeclear · ad-free storage cleaner Android
  • Subtrackr ad-free · Finance · com.aistudio.subtrackr · ad-free subscription tracker Android
  • Tic Tac Toe ad-free · Game · com.michael.tic_tac_toe · ad-free tic tac toe Android
  • Todo App ad-free · Productivity · com.michael.todoapps · ad-free todo list Android
  • WalkPlanner ad-free · Health · com.michael.walkplanner · ad-free walk route planner Android
  • Wi-Fi Drop ad-free · Utility · com.michael.wifidrop · ad-free Wi-Fi file transfer Android