Skip to content
CAI
Software that uses CAICheck a score

Iamstanlee/expense_bud

60.1

Adequate · 21 September 2026

3.8k

lines of production code

Dart

with C++

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Expense Bud is a cross-platform financial application built with Flutter that enables users to track income and expenses, view spending insights, and manage personal preferences. The system provides a clean architecture implementation for managing local data persistence, domain logic for financial calculations, and a user interface for onboarding, expense entry, and data visualization. It supports Android, iOS, Windows, and Web platforms, with a focus on local storage and user customization.

Features

Add expense tracking feature with local storage and UI

Introduced a new expense tracking feature that allows users to create, view, and manage expense entries. The feature includes a local data source using Hive for persistent storage, a repository layer, and domain use cases for creating and retrieving expenses. The UI provides an on-screen keyboard for amount entry, a category selection grid, and tabs to view daily and monthly expense summaries.

lib/features/expense · high confidence

Added Insights feature with expense breakdown and period selection

Introduced a new Insights feature that allows users to view expense breakdowns by category, including a header with total amounts and percentage changes, a pie chart visualization (when enabled), and a list of expense items. Users can select different time periods (e.g., this month) via a dedicated selection screen, which updates the displayed insights accordingly. The feature includes a provider for managing state and a UI for choosing the insight period.

lib/features/insights/presentation · high confidence

Added domain layer for user settings and preferences

Users can now have their preferences persisted and retrieved, including display options (showing entry dates and charts), the time period for inbox amounts, and currency configuration. This introduces the core domain entities (CurrencyEntity, UserPreferenceEntity), the corresponding repository interface, and usecases to fetch and update these settings.

lib/features/settings/domain · high confidence

Added insights feature with local data source and dependency injection

The app now includes an insights feature that retrieves expense data for specific periods (last 3, 7, 14 days, current month, and previous month) from local storage. This is implemented via a new \InsightLocalDataSource\ and \InsightRepository\, wired into the application's dependency injection container (\injector.dart\). The main entry point (\main.dart\) has been refactored to use \MultiProvider\ for state management, replacing the previous \ProviderScope\ and \mainProvider\ setup, and conditionally renders the \AppPage\ or \OnboardingPage\ based on the user's onboarding status.

lib · high confidence

Added local storage for user preferences and currency settings

Users can now have their display preferences (such as showing entry dates and charts) and currency settings persisted locally on the device. This new data layer, built on Hive, allows the app to remember user choices for the inbox amount, currency, and UI toggles across sessions.

lib/features/settings/data · high confidence

Added web support for the application

The application now supports running in a web browser. This is enabled by adding the necessary web entry point (index.html) and the web app manifest (manifest.json) which configures the app's title, icons, and PWA settings. Users can now access the app via a web URL.

web · high confidence

Introduce domain layer for the new Insights feature

Added the domain layer for the new Insights feature, including the \InsightEntity\ to hold current and previous expense data, the \InsightPeriod\ enum to define time ranges, and the \IInsightRepository\ interface with a \GetInsightsUsecase\ to fetch insights for a specific period.

lib/features/insights/domain · high confidence

Introduce user settings for currency, inbox amount, and display preferences

Users can now access a new Settings page to manage application preferences. This includes selecting a preferred currency, configuring the default amount for new entries (Inbox Amount), and toggling the visibility of entry dates and charts. The settings are persisted via a new SettingsProvider that manages the UserPreference entity, allowing users to customize their experience across the app.

lib/features/settings/presentation · high confidence

Introduces core infrastructure for expense tracking and user onboarding

The app now features a dedicated onboarding flow that guides new users to select their preferred currency before accessing the main interface. This change introduces a new expense tracking capability, supported by a clean architecture implementation in the core layer. This includes a local data source using Hive for persistent storage, domain entities and mappers for expenses, and a use-case abstraction for handling asynchronous operations. Additionally, the core library now provides essential utilities such as currency and category definitions, date formatting, and UI widgets like buttons and state indicators, establishing the foundation for the expense feature.

lib/core · high confidence

Windows desktop support added

The application now supports the Windows desktop platform. This change introduces the necessary CMake build configuration, native C++ runner code, and plugin registration to compile and run the Flutter app on Windows.

windows · high confidence

Behavioural changes

App package and name updated to expensebud

The Android application's package name has been changed from com.app.expense\_tracker to app.expensebud, and the app label has been updated to 'expensebud'. This change also includes updating the AndroidManifest.xml to reflect the new package structure, removing the previous splash screen configuration, and adding required queries for text processing.

android/app · high confidence

App rebranded to 'Expense Bud' with updated theme and font

The application's name has been changed to 'Expense Bud' in the app configuration. The default font family has been updated from 'MonumentExtended' to 'Chillax'. The theme configuration has been adjusted: the scaffold background color was changed to pure white, the grey color palette was updated, and the bottom navigation bar's unselected item color was updated to match the new grey scheme. Additionally, a new font size constant (s32) was added to the theme configuration.

lib/config · high confidence

Project renamed to Expense Bud with updated documentation

The project has been renamed from 'Expense Tracker App' to 'Expense Bud', and the README has been updated to reflect the new name, add a link to the Google Play Store, and describe the app's features such as income and expense tracking, financial summaries, and spending insights. The README also clarifies the app's architecture (clean architecture, MVVM pattern) and lists the core frameworks used (Flutter, Provider, get\_it, Hive).

(repo-wide) · high confidence

Removed legacy UI components and utility extensions

The legacy home page, expense list item, main page, and screen navigation extensions have been removed from the codebase. This cleanup eliminates the previous monolithic UI structure, paving the way for the new clean architecture design.

lib/ui · high confidence

Upgraded Gradle wrapper to version 8.10.2

The Android project's Gradle wrapper has been updated from version 6.7 to 8.10.2. This upgrade modernizes the build system, which may affect build performance, compatibility with newer Android Gradle Plugin versions, and the behavior of Gradle-based tasks.

android/gradle · high confidence

iOS app renamed to Expensebud with updated app icon and test configuration

The iOS application has been renamed from 'expense\_tracker' to 'Expensebud', with corresponding updates to the bundle name and display name in the Info.plist. The app icon assets have been updated to include support for iPad and CarPlay, and the minimum supported iOS version has been raised from 9.0 to 12.0. Additionally, a unit test target (RunnerTests) has been added to the Xcode project, and the project file has been upgraded to Xcode 15.1 format.

ios · high confidence

Test coverage

Added unit tests for date formatting and money utility functions

Added new test files for the date formatter and money utility classes. The date formatter tests verify string formatting, parsing into day and month key formats, and calculating the week of the month, including edge cases for the first and last days of a month. The money utility tests verify the conversion of decimal values to integral values and the formatting of integral values into readable currency strings.

test · high confidence

Dependencies

Upgrade Android build system and update Dart dependencies

The Android build configuration has been modernized by migrating to the new Gradle plugin management syntax, updating the Kotlin version to 1.7.10, and upgrading the Android Gradle plugin to 8.3.2. The project also upgraded the Java and Kotlin compilation targets to version 17, updated the minimum Android SDK to 23, and added release signing configuration. On the Dart side, the SDK constraint was raised to 3.2.6, and several packages were updated or added, including awesome\_notifications, provider, and fl\_chart, with corresponding updates to the lockfile.

(dependencies) · medium confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 54 → 60 (+5.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (-0.5)
  • Architecture 100 → 95 (-4.7)
  • Maturity 60 → 63 (+2.7)
  • Readiness 24 → 36 (+11.7)
  • Security 98 → 98 (+0.6)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (9)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High CVE: [GHSA redacted] (pubspec.lock)
  • Low vulnerability: [GHSA redacted] (pubspec.lock)
  • No exposed public API
  • Test reliability not included
  • complexity unreadable for .dart, .swift — churn × complexity hotspots could not be measured
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (9)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no architecture or design documentation (README.md)
  • Duplicated block (15 lines × 2) (lib/features/settings/presentation/settings.dart)
  • Duplicated block (17 lines × 2) (lib/features/settings/presentation/currency_settings.dart)
  • Duplicated block (5 lines × 2) (lib/core/utils/router.dart)
  • Duplicated block (8 lines × 3) (lib/features/insights/presentation/select_insight_period.dart)
  • High CVE: [GHSA redacted] (pubspec.lock)
  • Low vulnerability: [GHSA redacted] (pubspec.lock)
  • No ADRs found

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Iamstanlee/expense_bud was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 10e87bc9e3a09206cf079122eff0a98ae2451df8 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.