TaskFlow is an iOS task and habit tracker built with SwiftUI, MVVM, and SwiftData. Single-user, offline-first - all data stays on the device.
Built with Cursor AI only. This projectβfrom idea creation to the full codebaseβwas built entirely using Cursor AI; no manual coding was used. See CURSOR_AI_BUILD.md for the end-to-end workflow and prompts used so you can replicate the approach.
- Xcode 15+
- iOS 17+
- Swift 5.9+
- Add/Edit: Title (required), notes, due date/time, priority (Low / Medium / High), category, optional reminder (at due time or 5/15/30 min or 1 hr before), multiple tags
- Filters: All, Today, Overdue, Completed; filter by category (toolbar menu)
- Actions: Tap to view/edit, mark complete, delete; Save / Delete in edit screen
- Reminders: Local notifications with snooze (15 min, 1 hour, tomorrow 9am)
- Daily habits with βdone todayβ check-in and streak count
- Repeat schedule: Choose which weekdays (e.g. Mon, Wed, Fri) or every day
- Reminders: Optional daily reminder at a set time on scheduled days
- Edit/Delete: Context menu on each habit row
- Create, edit, delete (e.g. Work, Personal, Health)
- Color and SF Symbol icon per category
- One category per task
- Optional tags on tasks (e.g. #urgent, #waiting); many-to-many, multi-select in task edit
- Create new tags from the tag picker
- Today: Completed today, overdue, due today
- This week: Completed count
- Completed per day: Chart (last 14 days) via Swift Charts
- By category: Productivity / completion rate per category
- Appearance: System / Light / Dark (persisted, app-wide)
- About: App name, version, short description
- Tab bar: Tasks | Habits | Insights | Categories | Settings
- Dark-style cards, FAB for new task, filter chips, category badges
- Follows Apple HIG; theme in
TaskFlowTheme
- Tasks: Filter chips + category menu β grouped list (Today β Overdue β Upcoming β Completed) β FAB + or tap row β Task Edit (Title, Notes, Due, Category, Priority, Reminder, Tags β Save/Delete).
- Habits: List + + β Add/Edit habit (name, weekday picker, reminder); context menu Edit/Delete on rows.
- Insights: Today cards, week summary, completed-per-day chart, by-category list.
- Categories: List + + β Add/Edit (name, color, icon).
- Settings: Appearance (System/Light/Dark), About.
For a visual mockup of all screens, open docs/TaskFlow_Mockup.html in a browser.
TaskFlow/
βββ TaskFlowApp.swift # App entry, SwiftData container, RootView, AppDelegate
βββ ContentView.swift # Tab view (Tasks, Habits, Insights, Categories, Settings)
βββ App/
β βββ NotificationDelegate.swift # Foreground presentation, snooze action handling
βββ Models/
β βββ Task.swift
β βββ Category.swift
β βββ Priority.swift
β βββ Tag.swift
β βββ Habit.swift # + HabitCheckIn
β βββ HabitStreak.swift # Streak / isDoneToday helpers
βββ ViewModels/
β βββ TaskFilter.swift
β βββ TaskListViewModel.swift
β βββ TaskEditViewModel.swift
β βββ CategoryListViewModel.swift
β βββ HabitListViewModel.swift
βββ Views/
β βββ TaskListView.swift
β βββ TaskRowView.swift
β βββ TaskEditView.swift
β βββ CategoryListView.swift
β βββ HabitListView.swift
β βββ HabitRowView.swift
β βββ HabitWeekdayPicker.swift
β βββ InsightsView.swift
β βββ SettingsView.swift
β βββ TagsMultiSelectView.swift
βββ UI/
β βββ TaskFlowTheme.swift # Colors, category badges, preset hexes
β βββ FlowLayout.swift # Wrapping layout for tag chips
βββ Services/
β βββ NotificationService.swift # Task/habit reminders, snooze, categories
βββ Assets.xcassets/
βββ Info.plist
TaskFlowTests/
βββ TaskFlowTests.swift
βββ TaskModelTests.swift
- Open
TaskFlow.xcodeprojin Xcode. - Select an iOS Simulator (e.g. iPhone 16 Pro).
- Choose the TaskFlow scheme.
- Press Run (βR).
Or use XcodeBuild MCP: set session defaults (project path TaskFlow.xcodeproj, scheme TaskFlow, simulator e.g. iPhone 16 Pro), then run build_run_sim.
- TaskFlowTests: Priority and TaskFilter unit tests.
- TaskModelTests: Task
isOverdue/isDueTodaywith in-memory SwiftData.
Run in Xcode: Product β Test (βU).
- One type per file: One primary type per Swift file; filename matches type name (see
.cursor/rules/one-type-per-file.mdc). - MARK comments: Sections use
// MARK: -for navigation in the jump bar (Properties, Body, Subviews, Public Methods, etc.). - SwiftData: Task, Category, Tag, Habit, HabitCheckIn; task reminders and habit reminders scheduled via
NotificationService.
- Version: 1.0
- Bundle ID: com.taskflow.app