waseefakhtar/dose-android
59.6
Adequate · 22 September 2026
4k
lines of production code
Kotlin
primary language
7
measurements over time
What this system is
This is a mobile application for tracking medications, allowing users to add, schedule, and manage daily medication routines with local persistence and push notifications. The system provides a home dashboard for daily overviews, a confirmation flow for setting up reminders, and detailed views for marking doses as taken or skipped. It also includes analytics integration for monitoring usage and stability.
Features
Add Medication ViewModel introduces medication scheduling logic
The new AddMedicationViewModel provides the core logic for generating a list of Medication objects based on a start date, end date, frequency, and specific times of day. It calculates the number of occurrences by dividing the duration in days by the frequency interval, ensuring at least one medication is created if the duration is valid. Each generated medication includes the name, dosage, frequency, start/end dates, a boolean for whether it has been taken, the specific time of day, and the medication type. Additionally, it includes a method to log analytics events.
app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/viewmodel · medium confidence
Add MedicationConfirm screen to finalize medication setup
A new MedicationConfirm screen has been added to the app, allowing users to review and confirm their medication schedule. The screen displays a confirmation message using pluralized strings (e.g., 'All set' for one medication, 'All set' for multiple), and includes a 'Confirm' button that triggers the add-medication use case. Upon successful save, the user is navigated to the Home screen and shown a snackbar notification confirming timely reminders are set up. The screen also integrates Firebase Analytics and Crashlytics for tracking the confirmation event and logging errors if the medication list is null.
app/src/main/java/com/waseefakhtar/doseapp/feature/medicationconfirm · high confidence
Add placeholder Calendar screen and navigation route
A new Calendar feature is introduced with a placeholder UI displaying a "Coming Soon" message. The implementation includes a dedicated navigation route (CalendarRoute) that controls the visibility of the bottom bar and floating action button, alongside a basic ViewModel layer with a CalendarState class to manage future calendar data.
app/src/main/java/com/waseefakhtar/doseapp/feature/calendar · high confidence
Added AddMedicationUseCase for medication insertion
A new AddMedicationUseCase class has been introduced in the medication confirmation feature. This use case encapsulates the logic for inserting a list of Medication objects into the database via the MedicationRepository, returning a Flow of the inserted medications.
app/src/main/java/com/waseefakhtar/doseapp/feature/medicationconfirm/usecase · high confidence
Introduce CalendarInformation model for managing calendar state
A new CalendarInformation model class has been added to the add medication feature. This class encapsulates Calendar data, providing methods to retrieve time in milliseconds, format dates, and manage state saving/restoring for the UI.
app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/model · high confidence
Introduce Home screen with medication overview and calendar navigation
The Home feature now displays a daily overview card summarizing today's medications and a scrollable list of medication cards, each showing the medication name, dosage, type, and an icon. Users can select a specific date via a horizontal calendar strip to view medications for that day, with the selected date persisting across process death. The home screen also includes a greeting, a permission dialog for notifications, and empty states when no medications are present. This change adds the core UI components (HomeScreen, MedicationCard, DailyOverviewCard) and supporting data models (CalendarModel, CalendarDataSource) and use cases (GetMedicationsUseCase, UpdateMedicationUseCase) to the home feature.
app/src/main/java/com/waseefakhtar/doseapp/feature/home · high confidence
Introduce HomeViewModel with reactive state management
The Home screen now uses a new HomeViewModel that manages UI state via Kotlin Coroutines' StateFlow and combine operators, replacing previous mutable state approaches. The viewmodel persists the selected date filter across process death using SavedStateHandle, ensuring the user's date selection is retained. It also handles fetching and sorting medications for the selected date, and provides methods to update medication status and log analytics events.
app/src/main/java/com/waseefakhtar/doseapp/feature/home/viewmodel · high confidence
Introduce medication tracking with local storage, notifications, and analytics
Users can now add and manage medications with local persistence via Room, receive scheduled push notifications for reminders, and view a history of past medications. The app also tracks user interactions and notification events through Firebase Analytics and Crashlytics, providing insights into feature usage and app stability.
app/src · high confidence
New Medication Detail screen with take/skip actions and analytics
Users can now view a new Medication Detail screen that displays medication information and allows them to mark a dose as taken or skipped. The screen includes segmented buttons to update the medication's status in the database and logs corresponding analytics events for each action.
app/src/main/java/com/waseefakhtar/doseapp/feature/medicationdetail · high confidence
Behavioural changes
Add Medication screen redesign with flexible date and time selection
The Add Medication screen has been rebuilt using Compose, introducing a new UI for selecting medication start and end dates via a dedicated date range picker that displays the selected duration. Users can now specify multiple administration times per day using a dynamic list of time pickers. The flow also includes validation to ensure required fields are filled before proceeding to the confirmation step.
app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication · high confidence
Gradle build system upgraded to version 8.7
The project's Gradle wrapper has been updated to use Gradle 8.7, replacing the previous version 7.3.3. This change ensures the project uses a newer, more stable build environment for compiling and packaging the application.
gradle · high confidence
Home screen now manages UI visibility and permission requests
The home screen now controls the visibility of the bottom bar and floating action button, and handles requesting notification and alarm permissions upon navigation. This ensures the correct UI state and permission prompts are triggered when the user lands on the home screen.
app/src/main/java/com/waseefakhtar/doseapp/feature/home/navigation · medium confidence
Introduce MedicationConfirmViewModel with notification scheduling
The MedicationConfirm screen now uses a dedicated ViewModel that handles saving medications and automatically schedules push notifications for each added medication. The ViewModel integrates with the AddMedication use case, triggers the MedicationNotificationService to schedule reminders, and emits a success signal to the UI.
app/src/main/java/com/waseefakhtar/doseapp/feature/medicationconfirm/viewmodel · high confidence
Dependencies
Migrated build configuration to Kotlin DSL and centralized dependencies
The project's build system has been migrated from Groovy to Kotlin DSL (\.kts\), with \settings.gradle\ and \build.gradle\ files replaced by their Kotlin equivalents. Dependencies are now managed centrally in \gradle/libs.versions.toml\ using the Version Catalogs feature, which also allows for more precise control over library versions and plugin aliases. This change improves type safety and maintainability of the build configuration.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 63 → 60 (-3.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 97 (-1.9)
- Architecture 100 → 97 (-3.3)
- Maturity 53 → 52 (-0.7)
- Readiness 57 → 50 (-7.0)
- Security 70 → 93 (+22.8)
- Domain Modelling 100 → 70 (-30.3)
Resolved (14)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (app/src/main/java/com/waseefakhtar/doseapp/feature/home/MedicationCard.kt)
- Duplicated block (7 lines × 3) (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- Duplicated block (8 lines × 3) (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Rotate the exposed credentials — git history can't be un-committed
- Secret: generic-api-key (app/google-services.json)
- Test reliability not included
New (29)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (30 lines × 2) (app/src/main/java/com/waseefakhtar/doseapp/feature/home/MedicationCard.kt)
- Duplicated block (8 lines × 3) (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- Duplicated block (8 lines × 3) (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Hotspot: app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- Hotspot: app/src/main/java/com/waseefakhtar/doseapp/feature/home/MedicationCard.kt (app/src/main/java/com/waseefakhtar/doseapp/feature/home/MedicationCard.kt)
- Hotspot: app/src/main/java/com/waseefakhtar/doseapp/feature/medicationdetail/MedicationDetailRoute.kt (app/src/main/java/com/waseefakhtar/doseapp/feature/medicationdetail/MedicationDetailRoute.kt)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- MethodTooLong: AddMedicationRouteKt.AddMedicationScreen (app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt)
- No ADRs found
- No dependency advisory monitoring
- Repeated repair: app/src/main/java/com/waseefakhtar/doseapp/feature/medicationconfirm/usecase/AddMedicationUseCase.kt (app/src/main/java/com/waseefakhtar/doseapp/feature/medicationconfirm/usecase/AddMedicationUseCase.kt)
- …and 9 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
waseefakhtar/dose-android 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 22 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 cf6e2fc9b399b25b9a643a7544f4a7c1a660cf57 — 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-90d5d2fe38ee.