Native iOS
Dosely
Complex routines.
A calmer daily ritual.
Schedules, vial inventory, calculations, and reminders in one native app. I built the SwiftUI experience and the systems behind it, with a cache-first architecture that keeps the daily workflow close at hand.
50K+downloads
$70K+revenue
SwiftUI / Supabase / RevenueCat
Inside the buildDesigning the architecture around the daily experience.
Sole engineer at EFN Group. Native app, data layer, subscription integration, release, and production maintenance.
The challenge
Logging a dose affects a schedule, an inventory, and an ongoing protocol. These connected tasks should feel like one coherent routine, even when the network is unreliable.
The decision
After production experience with shared state, I moved toward singleton-free, cache-first repositories. Screens read local data first while the backend handles persistence and sync.
The tradeoff
Local responsiveness makes synchronization and state ownership more important. Explicit repositories give each screen a clear data boundary and make those responsibilities easier to follow.
- SwiftUI screensDaily tasks and inventory
- RepositoriesExplicit state ownership
- Local cacheRead without a network wait
- Backend syncPersistence and account data
In production A subscription app with camera-assisted vial entry, cycle planning, and a compound library. The September 2026 portfolio snapshot records 50K+ downloads and $70K+ revenue.









