Choklo 🐕
Pet care and medication reminder app with a robust, testable notification system.
Overview
Choklo was born out of necessity - I needed a reliable way to track my dog's medication schedule. What started as a simple reminder app evolved into a full-featured pet care companion with a notification system designed for reliability above all else.
Features
- ▸ Smart Notifications - Unified scheduling with swap-able backends for testing
- ▸ Manual Snooze - Reschedule reminders with configurable duration
- ▸ Recurring Protection - Confirm/skip only dismisses current instance, never future ones
- ▸ Structured Logging - Ring-buffer logging with levels, retention, and export
Architecture
The notification system is built with testability in mind. The NotificationScheduler
abstraction allows swapping the real implementation with a fake for tests, ensuring the app's
most critical functionality is thoroughly tested.
lib/
├── services/
│ ├── notification_service.dart # Lifecycle, scheduling, UI
│ ├── notification_scheduler.dart # Abstraction + implementations
│ └── logging_service.dart # Ring-buffer logging
└── screens/
└── settings/log_viewer_screen.dart Why I Built This
My dog Choklo needs daily medication, and I kept forgetting. Every reminder app I tried either had too many features I didn't need, unreliable notifications, or wasn't designed for recurring pet care tasks. So I built exactly what I needed - nothing more, nothing less.