AJ
Back to Builds
MobilePlanning

Chrono

A cross-platform Flutter task manager and scheduler with a full Todoist-style UX, local Hive persistence, push notifications, and a complete design system spec, targeting iOS 16+ and Android 8.0+.

FlutterDartHiveRiverpodFlutter Local Notifications

Overview

Chrono is a mobile task manager designed around the idea that scheduling should be as frictionless as capturing. It has a bottom-tab navigation with Today, Upcoming, Projects, and Profile views, a full task creation flow with due dates and priority levels, local persistence via Hive, and a notification system that fires reminders at scheduled times, all designed to feel native on both iOS and Android without platform-specific branching.

Why it was built

Built as a first serious Flutter project: the goal was to learn the Flutter rendering model, Riverpod state management, and the native plugin ecosystem (notifications, local storage) by building something complex enough to exercise all three. A task manager is the right scope: real enough to have tricky edge cases, familiar enough that the UX has a clear standard to aim for.

Full Task CRUD

Create, edit, complete, and delete tasks with title, description, due date, time, priority (P1-P4), and project assignment. Swipe-to-complete and swipe-to-delete on list rows with undo snackbar.

Today + Upcoming Views

Today view shows all tasks due today grouped by project. Upcoming shows a 7-day calendar strip with task counts per day. Overdue tasks surface at the top of Today with a red accent.

Push Notification Reminders

flutter_local_notifications schedules an exact alarm for each task with a due time. Tapping the notification deep links directly to the task detail screen via a custom URL scheme.

Tech Breakdown

Flutter

Single codebase for iOS and Android with native-feeling rendering via Skia/Impeller. Chosen specifically to learn the framework: Dart's strong typing and Flutter's widget model are well-suited to a data-heavy UI like a task list.

Riverpod

State management for task and project data across the four main screens. Riverpod's compile-time safety and provider scoping make it easier to reason about than the alternatives at this complexity level.

Hive

Hive is a pure-Dart key-value store with typed adapters. It needs no native code bridge, which means it works identically on iOS and Android without platform channel complexity.

flutter_local_notifications

The standard Flutter plugin for scheduling local push notifications. Handles exact alarms on Android 12+ (requires SCHEDULE_EXACT_ALARM permission) and notification permission requests on iOS 10+.

Challenges
  • 1

    Android 12+ introduced restrictions on exact alarms that require an explicit user permission grant via a system settings deep link, so the app needs to detect this permission state and guide the user through granting it before scheduling any reminders.

  • 2

    Hive type adapters must be generated for every custom data class. The code generation step via build_runner is a one-time setup, but the generated files must be committed to the repo, which creates friction in the initial project scaffolding.

What's Next

Currently in PRD and design system planning phase. Phase 1 covers project setup, the design system implementation, the Today view, and Hive persistence. Phase 2 adds the Upcoming calendar view and notifications. The full PRD is written and the folder structure is scaffolded.

Want to know more?

Happy to walk you through the details, just reach out.