← Back to Projects

Choklo 🐕

Pet care and medication reminder app with a robust, testable notification system.

Flutter Dart Android iOS Notifications

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.