Skip to content
CAI
Software that uses CAICheck a score

antonio-pedro99/bmi_calculator

53.6

Adequate · 20 September 2026

1.5k

lines of production code

Dart

with C++, C

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform BMI Calculator application built with Flutter that manages user health profiles and calculates Body Mass Index. It features a multi-step input flow for collecting metrics like height, weight, and age, and utilizes ObjectBox for local data persistence of person records. The app provides a record history view for past calculations and includes unit tests to verify the core calculation logic and state management.

Features

Add ObjectBox-based local storage controller

A new ObjectBox controller has been added to manage local persistence of Person records. This component initializes the ObjectBox store within the application's documents directory and provides methods to save, remove, and retrieve records, including a stream-based query for real-time updates ordered by creation date.

lib/controllers · high confidence

Add local data persistence for Person records using ObjectBox

The application now supports saving and retrieving Person records locally via ObjectBox. This change introduces the Person entity model (including fields for height, age, weight, name, gender, and BMI) and the corresponding generated ObjectBox code and model definition, enabling offline storage of user health data.

lib/data · high confidence

Add person data provider for BMI calculation

A new PersonProvider class has been added to manage user profile state, including gender, age, name, height, and weight. This provider exposes a method to calculate the Body Mass Index (BMI) and determine the corresponding health status, serving as the central state management component for person-related data in the application.

lib/providers · high confidence

Added ObjectBox and Path Provider plugin support on macOS

The macOS Flutter application now registers the ObjectBox and Path Provider plugins, enabling local database storage and file system access capabilities within the macOS environment.

macos · high confidence

Introduces custom input widgets and refines UI theming

This update adds several new custom UI components to the BMI calculator interface: an AgePicker and WeightPicker for selecting user metrics, a GenderPicker for choosing gender, and a ChatVisorButton for displaying feedback. It also introduces supporting visual elements like a CurvedButton, CompositionTile, and SavedBodyMaxIndexTile for displaying records. Under the hood, the project refactors its theming by moving color definitions from a global constants file into a dedicated theme module and standardizing text styles via a new CustomTypography class, which is applied across updated widgets like the AgeIndicator and GenderSelectionTile to improve visual consistency.

lib/view/customs · high confidence

ObjectBox database plugin enabled on Windows

The Windows build now includes the ObjectBox Flutter library plugin. This change registers the ObjectBox plugin with the Flutter engine and adds it to the CMake plugin list, enabling the application to use ObjectBox for local data persistence on Windows.

windows · high confidence

Redesigned input flow and added record history

The BMI Calculator app now features a streamlined, multi-step input process: users select gender, age, and weight on the home screen before proceeding to a dedicated height selection page. A new Record History page allows users to view past BMI calculations and delete all saved data. Additionally, a new Chat page has been added to the app structure, accessible from the results screen.

lib/view/pages · high confidence

Behavioural changes

App initialization refactored to support state management and local storage

The application entry point has been restructured to initialize local storage via ObjectBox before launching the UI, and to wrap the app in a MultiProvider setup using the Provider package. This change introduces state management capabilities for the Person model and ensures data persistence is ready before the home page renders, replacing the previous direct runApp call.

lib · high confidence

App package name and display label updated

The Android application's package identifier has been changed from com.example.bmi\_calculator to com.antonio.pedro99.bmi\_calculator across the main manifest, debug manifest, profile manifest, and the MainActivity Kotlin file. Additionally, the app's display name on the device launcher has been updated from the generic 'bmi\_calculator' to 'BMI Calculator'.

android · high confidence

Updated Linux application identifier and added ObjectBox plugin support

The Linux build now uses the application identifier com.antonio.pedro99.bmi\_calculator instead of the default com.example.bmi\_calculator, and the ObjectBox Flutter library plugin is registered and included in the plugin list for the Linux runner.

linux · high confidence

Test coverage

Added unit tests for BMI calculation logic

Replaced the default Flutter widget smoke test with new unit tests that verify BMI calculation functions and provider state, including checks for gender selection, BMI status classification (e.g., Obese, Normal), and specific BMI value calculations.

test · high confidence

Dependencies

App signing, new dependencies, and asset configuration

The Android build is now configured to sign release builds using a keystore defined in key.properties, replacing the previous debug signing. Several new dependencies have been added to support data persistence and UI enhancements, including objectbox and objectbox\_flutter\_libs for local storage, provider for state management, path\_provider, icons\_launcher, and intl. The build runner and objectbox\_generator are added as dev dependencies to support code generation. Additionally, several image and GIF assets are now included in the app bundle, and the ObjectBox output directory is configured to lib/data/local.

(dependencies) · high 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 46 → 54 (+7.3)
  • Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 97 (-2.7)
  • Architecture 100 → 99 (-1.5)
  • Maturity 32 → 44 (+12.3)
  • Readiness 22 → 32 (+10.3)
  • Security 100 → 98 (-1.6)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • No exposed public API
  • Test reliability not included
  • The asset README explains replacing image files but does not state which assets are required or how to set them up. (ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md)
  • complexity unreadable for .dart, .kt, .swift — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (11)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (12 lines × 4) (lib/view/pages/chat_page.dart)
  • Duplicated block (15 lines × 3) (lib/view/pages/chat_page.dart)
  • Duplicated block (24 lines × 2) (lib/view/pages/chat_page.dart)
  • High CVE: [GHSA redacted] (pubspec.lock)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (lib/view/pages/chat_page.dart)
  • MethodTooLong: ResultPage.build (lib/view/pages/result.dart)
  • 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

antonio-pedro99/bmi_calculator 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 20 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 81f4912adb3ad878af2ffe622a8085236d395c49 — 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-28e75b8e3254.