Glucose Records Tracker is a simple, offline-first Android app for recording daily blood glucose readings and viewing them in a clear chronological history.
The project began with a real usability problem: my 81-year-old grandfather was recording his blood glucose readings by hand on paper. I wanted to build a digital alternative that remained simple enough to use without introducing accounts, complicated menus, unnecessary features, or medical interpretation.
The result is a focused digital record book designed around ease of use, readability, and privacy.
Important: Glucose Records Tracker is a record-keeping tool only. It does not provide medical advice, diagnose conditions, interpret glucose values, or replace guidance from a qualified healthcare professional.
- Four consistent daily reading categories:
- Fasting
- 2 Hours After Breakfast
- 2 Hours After Lunch
- 2 Hours After Dinner
- Large, readable cards for daily readings
- Custom numeric keypad with no QWERTY keyboard required
- Support for marking a reading as
—when it was not taken - Clear visual indication of the next unrecorded reading
- Edit existing records
- Confirmation before deleting a record
- Navigate between previous dates and today
- Choose a specific past date using the Android date picker
- Date-grouped record history, newest first
- Fully offline local storage
- Export all records as a date-grouped PDF using Android's save-document picker
- No account required
- No network access
- No analytics
- No advertising
- No runtime permissions
The app was initially designed for an older adult, so the interface prioritizes simplicity over feature density.
Design decisions include:
- Large text and touch targets
- High-contrast colours
- Clear, persistent labels
- No gesture-only core actions
- A custom number keypad for straightforward entry
- Visible date navigation
- Explicit confirmation for destructive actions
- A focused workflow with no medical dashboards or unnecessary statistics
The aim is not to build a full diabetes-management platform. It is to make one everyday task—recording readings—simpler.
Glucose Records Tracker is currently local-only.
Records are stored on the device using a Room database. The app does not require an account and does not send readings to a server.
The current version does not include:
- Cloud synchronization
- Analytics or tracking
- Advertising
- Remote data collection
- Medical interpretation
Because records are stored locally, uninstalling the app or clearing its application data may delete stored records. Use the PDF export on the Records screen to retain a readable copy.
- Kotlin
- Jetpack Compose
- Material 3
- Room
- Kotlin Coroutines and Flow
- Android ViewModel
- Gradle Kotlin DSL
- KSP
Each day can contain one record for each reading category.
A reading can be:
- Recorded — contains a numeric glucose value
- Skipped — explicitly marked with
— - Empty — no record has been entered yet
The Room database enforces one record per date/category combination using a unique index.
The project includes a non-destructive database migration for the introduction of explicit recorded and skipped states.
- Android Studio
- JDK 17
- Android SDK Platform 35
- Android 8.0 (API 26) or newer
- Clone the repository.
- Open the project folder in Android Studio.
- Allow Gradle to sync and download the required dependencies.
- Select an Android device or emulator.
- Run the
appconfiguration.
On Windows:
.\gradlew.bat :app:assembleDebugOn macOS or Linux:
./gradlew :app:assembleDebugThe generated debug APK can be found under:
app/build/outputs/apk/debug/
app/
|-- schemas/ Room database schemas
|-- src/
| |-- main/
| | |-- java/.../data/ Entity, DAO, database, migrations, repository
| | |-- java/.../ui/ ViewModel, input logic, and Compose UI
| | `-- res/ App icon and Android resources
| |-- test/ Local unit tests
| `-- androidTest/ Instrumented and Room repository tests
The project includes tests for core record-entry and persistence behaviour, including reading completion logic and repository operations.
Before relying on the app for important records, test the application on the intended physical Android device.
The current release is intentionally focused and local-only.
It does not currently provide:
- Export to CSV
- Automatic backups
- Cloud synchronization
- Multiple user profiles
- Reminders or notifications
- Charts or trend analysis
- Medical interpretation
These limitations are deliberate unless a feature can be added without compromising the app's simplicity and privacy-first design.
Potential future improvements include:
- CSV export and local backup
- Doctor-friendly PDF export refinements
- Improved support for large Android font scaling
- Additional accessibility testing across devices
- Improved automated test coverage
- Optional data import and restore
Contributions are welcome.
Please preserve the core principles of the project:
- Accessibility first
- Offline-first and privacy-conscious
- Simple enough for older adults and users who prefer minimal interfaces
- Record keeping rather than medical interpretation
- No unnecessary tracking, advertising, or account requirements
For substantial changes, please open an issue first to discuss the proposed approach.
This project is available under the MIT License. See LICENSE for details.