EVRION.
Streaklet — main project image

Mobile App · Habits

A fully offline iOS habit tracker built with SwiftUI and SwiftData — one-tap logging, four frequency modes, streaks and completion rates derived from history, and a heatmap of every day you showed up.

Project
Streaklet
Year
2025
Discipline
iOS · SwiftUI
Stack
SwiftUI · SwiftData

Context

Streaklet is a native iOS habit tracker: create habits to build or break, log them with a single tap, and watch streaks grow. It's built entirely with SwiftUI and SwiftData, with no third-party dependencies and no network anywhere — everything lives on the device.

The whole app is organized around one daily moment: open it, see exactly what's due today, and tick things off in a second.

Challenge

Habit apps quietly rot when their numbers drift. If a streak or completion rate is stored and then updated by hand, a single missed write or an edited log leaves the stats lying — and a habit tracker that lies about your streak is worse than none.

It also had to respect real life: partial progress, back-dating a missed day, four different frequency rules, and a Today screen that shows only what's actually due — all while staying fast and fully offline.

Approach

Streaks, longest streaks, and completion rates are never stored — they're derived on the fly from the log of completions against each habit's frequency. That single decision means the stats can't drift out of sync, because there's nothing to keep in sync.

Logging supports partial progress and back-dating via a week strip, reminders run through local notifications with no server, and the whole thing ships with onboarding templates, dark mode, haptics, a reorderable list, and JSON export.

Outcome

The result is a complete, offline-first tracker: a Today view that surfaces only what's due, a Stats screen with completion charts and current streaks, and a per-habit detail with a history heatmap and 30-day trend.

Because it's dependency-free and local-first, it launches instantly, works with no signal, and keeps every byte of habit data on the user's phone.

Technical Detail

Built for iOS with SwiftUI and SwiftData for local persistence, Swift Charts for the trend and heatmap, and UNUserNotificationCenter for offline reminders. Habit and HabitLog are the only stored models; HabitStats is computed, never saved.

Empty and permission-denied states, a completion animation, and a debug demo-seed for screenshots round out a genuinely shippable app.

// Gallery

Today and Stats — one-tap logging, streaks, and completion
Today and Stats — one-tap logging, streaks, and completion
Per-habit detail with a history heatmap and 30-day trend
Per-habit detail with a history heatmap and 30-day trend
Reminders, themes, and JSON data export
Reminders, themes, and JSON data export

// Next step

The next case study could be yours. Tell us what you're building and we'll tell you honestly how we'd ship it.