The Todo List module helps you manage recurring tasks and track completion progress, including:
This module helps you never miss important tasks like car maintenance, filter replacements, periodic checks, etc.
Use this module when you have:
isActive = true)Note: Time-based tasks (CYCLE type) do not have a “Confirm” button in the card. Confirmation is only done in the “Due Tasks” (bell list) screen.
Goal: Create a time-based todo so the app automatically reminds you when it’s due.
Main Steps:
Wireframe - Add Time-Based Todo Screen:
┌──────────────────────────────────────────────┐
│ < Add Time-Based Todo │
├──────────────────────────────────────────────┤
Task Name
[ Replace water filter ]
Recurrence Cycle
Every [ 3 ] [ Month ▼ ]
(Unit: Day / Week / Month / Year)
Next Due Date
[ 03 / 01 / 2026 ▼ ]
Hint:
Due date for the first time.
Subsequent dates will be automatically calculated based on the cycle you entered.
Reminder Time
[ 08 : 00 ▼ ]
──────────────────────────────────────────────
[✓] This task incurs expenses
┌─────────────────────────────────────┐
│ Category * │
│ [Utilities ▼] [+ Create New] │
└─────────────────────────────────────┘
──────────────────────────────────────────────
Note (optional)
[ ]
[ ]
[ ]
──────────────────────────────────────────────
[ Cancel ] [ Save ]
└──────────────────────────────────────────────┘
Goal: Create a metric-based todo to track car maintenance based on mileage.
Main Steps:
Wireframe - Add Metric-Based Todo Screen:
┌──────────────────────────────────────────────┐
│ < Add Metric-Based Todo │
├──────────────────────────────────────────────┤
Task Name
[ Change car oil ]
Cycle
Every [ 3,000 ] Unit [ Miles ]
(Unit: Miles / Hours / Times / ...)
Last Completed Metric Value
[ 12,500 ]
──────────────────────────────────────────────
[✓] This task incurs expenses
┌─────────────────────────────────────┐
│ Category * │
│ [Car Maintenance ▼] [+ Create New] │
└─────────────────────────────────────┘
──────────────────────────────────────────────
Note (optional)
[ ]
[ ]
[ ]
──────────────────────────────────────────────
[ Cancel ] [ Save ]
└──────────────────────────────────────────────┘
Goal: View an overview of todos, filter by type, search, and view details of each task.
Main Steps:
Wireframe - Todo List Screen:
┌─────────────────────────────────────────────────────────┐
│ [← Back] Todo List [🔔] │
└─────────────────────────────────────────────────────────┘
│ 🔍 Search... │
│ │
│ [All] [Time-based] [Metric-based] │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Card: Replace water filter │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ Replace water filter [Completed] [🗑️] │ │ │
│ │ │ │ │ │
│ │ │ 📅 Cycle: Every 3 months │ │ │
│ │ │ ✅ Last completed: 12/01/2025 │ │ │
│ │ │ 📅 Next due date: 03/01/2026 │ │ │
│ │ │ ⏳ 76 days remaining │ │ │
│ │ │ ───────────────────────────────────────────── │ │ │
│ │ │ View History › [⚪ Active]│ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Card: Change car oil │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ Change car oil [🗑️] │ │ │
│ │ │ │ │ │
│ │ │ 📏 Track by: Miles │ │ │
│ │ │ ✅ Last confirmed: 12/02/2025 │ │ │
│ │ │ 🔢 Last metric value: 12,500 miles │ │ │
│ │ │ 🎯 Next due: 14,500 miles │ │ │
│ │ │ ⏳ ~300 miles remaining │ │ │
│ │ │ ───────────────────────────────────────────── │ │ │
│ │ │ [✓ Confirm] │ │ │
│ │ │ ───────────────────────────────────────────── │ │ │
│ │ │ View History › [⚪ Active]│ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ [+ FAB] │
└─────────────────────────────────────────────────────────┘
Goal: Confirm completion of a metric-based task by entering the current metric value.
Main Steps:
Wireframe - Confirm Metric-Based Task Dialog:
┌──────────────────────────────────────────────┐
│ Confirm Metric-Based Task │
├──────────────────────────────────────────────┤
Task Name:
Change car oil (readonly)
Track by:
Miles (readonly)
Last Completed Metric Value:
12,500 Miles (readonly)
──────────────────────────────────────────────
Current Metric Value
[ 14,520 ] Miles
Delta:
+2,020 Miles (auto)
──────────────────────────────────────────────
Note
[ ]
[ ]
[ ]
──────────────────────────────────────────────
[ Not Confirmed ] [ Confirmed ]
└──────────────────────────────────────────────┘
Goal: Edit todo information and view completion history.
Main Steps:
Wireframe - Todo History Screen:
┌─────────────────────────────────────────────────────────┐
│ [← Back] Todo History - Replace water filter │
└─────────────────────────────────────────────────────────┘
│ [All] [This Month] [Last Month] [Last 3 Months] │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Replace water filter [Completed] │ │
│ │ │ │
│ │ 📅 Cycle: Every 3 months │ │
│ │ ✅ Completed on: 12/01/2025 – 09:10 │ │
│ │ 📝 Note: Replace filter #1 and #2 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Replace water filter [Completed] │ │
│ │ │ │
│ │ 📅 Cycle: Every 3 months │ │
│ │ ✅ Completed on: 09/01/2025 – 08:45 │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Goal: Deactivate or delete a todo when it’s no longer needed.
Main Steps:
Goal: Confirm a metric-based task and automatically add the related expense.
Main Steps:
Wireframe - Incurred Expense Dialog:
┌──────────────────────────────────────────────┐
│ Incurred Expense? │
├──────────────────────────────────────────────┤
Do you want to add an expense for this
completion?
[ Cancel ] [ Add Expense ]
└──────────────────────────────────────────────┘
isActive = true)nextDueDate - today > 7 days0 < nextDueDate - today ≤ 7 daysnextDueDate < today and not confirmedisActive = falselastMetricValue = current valuenextMetricValue = current value + cyclelastCompletedDate = todayhasCost = true: Show “Incurred Expense?” dialog after successful confirmationinitialNote, initialCategoryId, todoHistoryIdnextDueDate >= today)isActive = true).Bell Icon: The bell icon in the header navigates to the “Due Tasks” (bell list) screen where users can confirm due tasks (only for CYCLE type).
Lock Cycle/Unit: If there is history, the cycle (CYCLE) or unit/cycle (METRIC) will be locked and cannot be edited to ensure data consistency.
Metric Validation: When confirming a metric-based task, the current metric value must be ≥ last completed metric value. If not, the app will show an error and prevent confirmation.
Incurred Expenses: If a task has expenses (hasCost = true), after successful confirmation, the app will ask if you want to add an expense. If you choose “Add Expense”, the app will automatically pre-fill the note and category.
Delete Task: When deleting a task, all related history will also be deleted (cascade delete). Notifications will also be cancelled.
Deactivate: When deactivating a CYCLE type task, notifications will be cancelled. When reactivating, notifications will be rescheduled (if nextDueDate >= today).