JOURNAL · BUILD LOG · 6 OF 6
How the app is put together, including the parts that went badly
One developer, built in public. Date maths across timezones, widget writes that never landed, a migration that took eleven seconds on old hardware, and the commercial reasoning behind the free tier. Code where the code is short enough to be useful.
PILLAR
/blog/building-a-habit-tracker-in-swiftui
Building a habit tracker in SwiftUI: the parts that were hard
Not the list view. The date maths, the widget writes, and the migration that ran on 40 000 rows.
366 words 3 internal links
BUILD LOG
Shipping 23 themes and 23 app icons in a weekend
The asset pipeline, and why the icon matters more than the theme.
BUILD LOG
Why miniHabits ships a real free tier
Ten habits and eight themes, forever, with no timer. The reasoning is commercial, not charitable.
BUILD LOG
Interactive widgets in SwiftUI, and the writes that never land
A button in a widget looks like one line of code. The store it writes to is the interesting part.
BUILD LOG
HealthKit integration notes from an app that reads five metrics
Permissions you cannot query, observers that over-fire, and duplicate samples from three sources.
BUILD LOG
Anonymous sync without accounts: how the device key works
Sync across devices with no email, no password and no user record. Here is the design and its limits.