Back to Projects

Habits iOS App

Most habit trackers count daily streaks. That model fits brushing your teeth, but not "go to the gym three times a week", and it punishes the week you're sick with a reset to zero. I designed this app around how people actually keep commitments:

  • Windows, not days. A habit is due by a deadline and can be done any time before it, so a Tuesday workout counts whether it happens Monday or Tuesday.
  • Urgency you can see at a glance. Each habit's color shifts from green to yellow to red as its deadline approaches and passes, so the list sorts your attention without a single notification.
  • Setbacks without guilt. Snoozing pauses a habit for days or weeks and previews the next due date, instead of breaking a streak.
  • Purpose, not just a checklist. Habits group under the goal they serve, which makes the small tasks easier to keep doing.
  • Your data stays yours. Everything is stored on the device, iCloud sync is opt-in, and a full export is one tap away.

Built in Swift with SwiftUI, SwiftData for storage, WidgetKit for interactive Home Screen widgets, and CloudKit for the optional sync.

Star Chart

Habit Categories

Complete every habit due today to earn a star, reading as a constellation of on-track days over weeks and months. Your active habits are sorted into:

Overdue

In Progress, can complete early

Scheduled

The urgency gradient

Habit due in 3 days

When just completed, a habit is green.

Habit due in 2 days

As the deadline approaches, it starts shifting to yellow.

Habit due in 1 day
Habit due today

On the final date to complete it, it's yellow.

Habit overdue by 1 day

As it becomes more overdue, it starts shifting to red.

Habit overdue by 2 days
Habit overdue by 3 days

Habits

New Habit

Flexible windows

Every habit has a "Can Complete Before Deadline" toggle. Turn it on and the habit becomes a window rather than a fixed date.

Starting mid-stream

When you create a recurring habit, you're asked whether to Start Today or Start by [deadline]. If you already did the thing today — went for a run before you thought to log it — Start Today counts it immediately instead of forcing you to wait for the next cycle to begin tracking. Or it gives you the time to complete a new task.

Reminder Settings

Reminders

Each habit can carry an optional reminder with a custom message, and — if you need it — a repeating nudge every N minutes until end of day for high priority items.

Snooze Habit

Snoozing without breaking the habit

Life happens. A habit can be snoozed for a set number of days or weeks, with the next due date previewed up front — so a sick week or a trip doesn't quietly reset progress or guilt you on the way back.

Goals

New Goal

Habits can be grouped under custom Goals.

It can be easy to put off doing a task, but increases its importance and purpose when remembering the overall Goal you are working on achieving. Breaking up your goals into granular achievable pieces can help make them realistic.

Widgets

Small widgetMedium widgetLarge widget
Small — the simplified star chartMedium — with a list of the habits due todayLarge — tap a habit to complete it without opening the app

Privacy

Privacy Policy

Privacy Policy

No tracking or third-party services, full CSV export of your created data on demand, and a plain-language privacy policy.

Your Data

See your data

An expandable "Your Data" panel shows exactly what's being stored locally in SwiftData.

iCloud Backup Settings

Local by default, synced by choice

All data lives only on your device unless you opt in to iCloud backup so you can view your data on multiple devices.

Export Data

Export Your Data

No pressure of being locked into this particular habit/task/goal tracking app, export your full data at any time so you can work with it or transition it to another platform.

Next Project