Trim - Weight Loss Program

Completed

Aug 2025 - Nov 2025 (4 months)

Trim is a Flutter-based weight-loss program app focused on daily health tracking, guided nutrition, and medication/injection adherence.

The implementation work combined feature growth (health data, injection timelines, affiliate/social flows) with sustained production hardening across crash fixes, telemetry controls, release packaging, and platform upgrades.

Built with: Flutter, Dart, Provider, flutter_bloc, Firebase (Analytics/Crashlytics/Performance/Remote Config), Health (HealthKit/Health Connect), fl_chart, flutter_inappwebview, share_plus, and get_it.

Project Activity

Recent updates for Trim - Weight Loss Program. Completed

November 2025

  • issue is weight graph; no decimal point number in calories goal; changed baseUrl from https://performantcode.io/public/demo/gettrim/mobile_api/api to https://api.xo-co.uk/api; Android-1.2.3 + 203.
  • the app was getting stuck on splash screen in release mode; Android-1.2.2+202.
  • set calorie cycle; Android-1.2.1+201 uploaded to Firebase testing.
  • affiliate portal screen completed (placed in profile screen); Android-1.2.0+200.
  • affiliate portal working properly.
  • affiliate portal cookie management And automatic loading working; affiliate portal basic; meal share flow complete.
  • share food on social media.
  • share food on social media.
  • refactor code for initialization of firebase service; commented PostHog code for event recording for now.
  • Session Recording & Improved Crash Reporting: Integrating Google Analytics Recording Events Detailed breadcrumb logs for crash reporting; added get it for dependency injection; Android-1.1.56+56.
  • disable crash reporting, performance & analytics recording in debug mode; remove cached injection on logout; trying to measure API performance; show app version in debug mode (profile screen).
  • whatsapp url changed in support; show back button in reset password screen.
  • Load next injection data (only once) ; Needs proper testing of Record Injection and Edit Injection; Move next injection section in Home tab Show ripple effect when clicking on Next injection section; iOS-1.1.54+54.
  • Show Medicine type in Injection Graph & Drug Level Graph Open Record Injection screen when Next injection section clicked; improved nutrition ai screen; - Next injection section moved to top in Track->Overview - Open Record Injection screen when Next injection section clicked; iOS-1.1.53+53.

October 2025

  • bugs in blood drug level graph; fixed issue where a single injection was not shown in blood drug level graph when it is on current date & only one injection; onboarding issue fixed; iOS-1.1.52+52.
  • Calculate drug level based on half-life (exponential decrease in every interval); refresh monthly regardless of date; on edit injection - when we change some injection, it should refresh data in graph.
  • Wegovy injection not having 7 days half life; idea 1: make goal prominent; jab count cirlce done.
  • jab count timer circle; recipe filters new recipes (protein & fiber included generally); minor bugs fixed in drug-level-graph.
  • blood drug level graph (completed); drug level graph (in progress).
  • iOS-1.1.46+46.
  • injections list & edit injection screen; iOS-1.1.45+45 uploaded to AppStore.
  • injections list tab; allow nulls in medication, jab location and dosage. Also disable save button until these fields are filled; user's registered email injected in calendly form.
  • New injections can only be added in today & past 3 days. Edit injection can be added for a year.
  • pdf generation issue fixed; minor grammar issue; Build 1.1.43+43 uploaded on iOS Appstore.
  • monthly chart in injection is primary; fixed issues reported by client; supporting Android code up to Flutter version 3.35.5.
  • refactoring - applied suggested changed by compiler; code refactoring; code refactoring; updated to flutter 3.35.5 for android as well (need to test).
  • project updated to flutter 3.35.5 (so we can debug iOS 26 on devices).
  • show goal value in chart; show st and pounds in tool-tip of graph; some bugs fixed reported by tester; iOS-1.1.41+41 uploaded.
  • manual nutrition completed; code refactoring; functionality of manual nutrition done; ios device running on debug issues.
  • Android-1.1.39+39.
  • nutrition ai screen code refactoring (in progress); render issues fixed for small devices; line chart click was showing inaccurate decimal conversion; Android-1.1.38+38.
  • recipe details in pdf and screen not correctly shown; if a recipe doesn't have instructions then we wont show it to user; add recipe manual (in progress).
  • chart bugs fixed; record-injection-screen: get injection on date selection & only one injection can be saved on a day; 1.1.37+37 uploaded to GooglePlay and AppStore.

September 2025

  • record injection API is working now; weight goal line fix.
  • monthly yearly chart completed for medicine; yearly chart shown with all data points.; working on yearly line chart with full data; version 1.1.35+35.
  • injection data graph (in progress); refactoring names in copied code; medicine tab graph ui shown correctly (currently weight data).
  • reusable code for charts; weight line chart finalized.
  • yearly chart finalized; separate class for monthly line chart; weekly chart dynamic y-range based on min/max y-values with 5% padding.
  • shown data points not more that 12 (have reasonable gaps if there are more points in month chart).
  • show dots at-least after 1 point and preferably after 2 points; added weight goal line in line chart & dynamic range based on min/max range of y values.
  • record injection API implemented; recipe filters finalized; minor font issues.
  • record injection ui done; working on dropdown; record injection very basic ui.
  • medicine tab ui -- not worked on chart yet.
  • working on medicine tab; improved categories widget ui; supported 16kb page size (as required by Google); iOS-1.1.24+31 uploaded to Appstore and GooglePlay.
  • scrollable items in categories widget & multi-screen size support; Bugs: shown correct percentage of Consumed in overview screen & reset consumptionPercentage to 100% in NutritionAI screen when new image is selected.
  • recipe filter screen ui completed; recipe filters done.
  • working on recipe filters screen; created CategoriesWidgetUniversal so it can be re-used in other screens easily.
  • creating categories widget universal; iOS-1.1.22+22 uploaded for internal testing.
  • fixed one issue in track screen (reported on crashlytics); fixed dashboard screen issues reported on crashlytics; fixed splash screen issue reported on crashlytics; Android-1.1.22+30 uploaded for internal testing.
  • nutrition logic & ui completed; new Nutritions.fromJson -- io.flutter.plugins.firebase.crashlytics.FlutterError - type 'double' is not a subtype of type 'int?'; consumption logic fixed according to API requirements.
  • firebase setup using flutterfire; update pods; crashlytics upload symbols file issue fixed for ios.
  • updated gradle file & tasks priority.
  • updated firebase google-services.json & google-services-info.plist files; FoodAndDrinkState.loading.<fn>.<fn>.<fn> -- io.flutter.plugins.firebase.crashlytics.FlutterError - Null check operator used on a null value; Fatal Exception: TrackScreenState.setAwardsInModel DashBoardScreenState.setAwardsInModel -- type 'String' is not a subtype of type 'List<dynamic>'; SLEEP UNKNOWN is not available on iOS and we are not using it on Android as well, so we have removed it. This was the same code already available in 1.1.19-build deployed on iOS.

August 2025

  • AppUtils.convertWeight -- io.flutter.plugins.firebase.crashlytics.FlutterError - FormatException: Invalid double. Error thrown .; TracksGraphContainerState.filterDataByMonth.<fn> -- io.flutter.plugins.firebase.crashlytics.FlutterError - FormatException: Invalid date format. Error thrown .; ApiServices.getHealthData -- io.flutter.plugins.firebase.crashlytics.FlutterError - type 'Null' is not a subtype of type 'String'; Android 1.1.20+28 uploaded for internal testing.
  • fixed many crashes; Fixed context.mounted issues; force update feature realtime update listener implemented; Build 1.1.20 (20) uploaded on GooglePlay for internal testing.
  • removed background data fetch for health data (as it in not needed and Google doesn't approve app); minor ui issue; fixed date view ui for small devices.
  • integrated firebase analytics; crash fixed for some devices; fixed ui issues for small screen devices; targetSdkVersion set to 35 so that old version users can see update option.
  • fixed crash: RangeError (length): DashBoardScreenState.build.<fn>.<fn>.<fn> -- Invalid value: Valid value range is empty: 0.
  • time line; ui issues in Track screen; heart rate & sleep data in Android.
  • healthkit permission issue fixed -- calculated total calories consumed; added healthkit permissions according to documentation; steps data issue fixed - Android.
  • working on total calories burned data on Android HealthKit.
  • working on android health kit bugs.

Objective Link to heading

  • Extend a production Flutter weight-loss app with health integrations, medication/injection workflows, and stronger retention/support surfaces.
  • Improve reliability across analytics, crash handling, release hardening, and platform compatibility while shipping frequent production updates.

Delivery scope Link to heading

  • Implemented and stabilized Apple HealthKit and Android Health Connect flows for steps, heart rate, sleep, active calories, and related permissions.
  • Added medicine-track capabilities including record/edit injection flows, dosage/medication wiring, date constraints, and injection history support.
  • Built charting upgrades for weekly/monthly/yearly views with dynamic ranges, goal lines, data-point controls, and blood drug-level calculations.
  • Expanded nutrition and recipe tooling with manual nutrition entry, AI/consumption percentage fixes, filter UX, and recipe/manual content handling.
  • Integrated affiliate-portal and social-sharing features (webview cookie persistence, meal sharing) plus Firebase analytics/crash/performance/remote-config refinements.

Architecture and operational focus Link to heading

  • Maintained a hybrid state architecture (provider + flutter_bloc) with repository-style API access and route-based feature composition.
  • Prioritized release-cycle quality through repeated crash triage from Crashlytics, compatibility fixes for small devices, and staged iOS/Android build deliveries.
  • Kept the app aligned with platform/toolchain requirements (Flutter 3.35.5 migration path, Android target/NDK updates, health permission compliance).