One source of state
Swift 6, an @Observable HaloStore, and @Environment keep the native surfaces connected. Actor-isolated persistence separates a saved check-in from a private Journey moment.
A native SwiftUI product for life beyond the counter.
Problem
Give people a reason to return that isn’t another streak to protect.
Approach
Make an authored daily world the entry point. Keep reflection optional, support personal, and longer-term progress tangible.
My work
I founded Halo, set its product direction, designed and built the SwiftUI experience, and carried the same system into web, bracelet, and packaging.
01
An authored world to enter, progress to return to, and a familiar companion. Inspiration comes before tasks; participation is optional.
02
The design continues in code: persistent state, custom scene transitions, accessible layouts, and private on-device reflection.
Swift 6, an @Observable HaloStore, and @Environment keep the native surfaces connected. Actor-isolated persistence separates a saved check-in from a private Journey moment.
A custom AnyTransition brings scenes into focus; Reduce Motion uses a fade. @ScaledMetric and ViewThatFits adapt the calendar to larger type without losing day identity.
Foundation Models and structured @Generable extraction support local reflection on compatible devices. Memory is inspectable and removable; model unavailability never silently selects cloud.
03
A twelve-setting bracelet accumulates natural stones instead of replacing earlier milestones. A year becomes an object worth keeping.
Brushed steel, nearly flush settings, and a serviceable clasp. The digital record and physical object remain separate; a stone cannot certify sobriety.
Twelve individually packaged stones make time tangible. The approved Year One material system and imagery stay consistent across bracelet, packaging, and web.
Fit, retention, and manufacturing remain unvalidated; NFC placement is unresolved. The renders show design intent, not finished inventory.
04
Quiet typography, natural materials, and cinematic pacing connect app, object, and website. The year explorer lets people understand the bracelet by using it.
Scroll, swipe, and arrow keys update the stone, accumulating bracelet, material image, and story together.
Blender/Cycles renders become aligned WebP layers, with decoded frames cached and adjacent months prefetched.
Transforms and opacity carry the transition. Keyboard and reduced-motion paths resolve immediately, keeping the selected material legible.
Live product site
Explore the bracelet and its twelve material chapters. Native iOS development is separate.

Halo product site
Explore live site