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+.
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
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.
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 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.
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+.
- 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.
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.