FlowOS

A native iOS + macOS app for daily anchors across six life domains.

Swift SwiftUI SwiftData HealthKit Notion API XcodeGen

The problem

Productivity tools optimize for throughput — more tasks, faster execution, tighter tracking. But the things that matter most (health, relationships, creativity) don’t fit neatly into a task list. I needed a system that tracks balance across life domains, not just output — and I wanted it to feel like the rest of my operating system, not a cross-platform web shell.

The approach

FlowOS is built around anchors: small daily commitments spread across six domains — Health, Wealth, Creativity, Clarity, Exploration, and Relationships. Each morning, you set your anchors. Throughout the day, you check them in. Over time, patterns emerge. The native rewrite trades Capacitor for SwiftUI, replaces browser storage with SwiftData, and pulls in HealthKit so the app knows whether you actually moved today.

FlowOS on iOS — Today view with the anchors section, Steps/Active/Sleep stats row, and the bottom tab bar

The weekly review surfaces patterns automatically — completion rates by domain, streak and gap detection, reflection prompts generated from the data. No manual journaling required; the system observes and surfaces what matters.

FlowOS Week tab showing the Insights view with a weekly completion arc, domain balance bars, and a Recommendations card

How it works

SwiftUI drives the interface across iOS and macOS from a shared codebase — iOS as a TabView, macOS as a NavigationSplitView sidebar. SwiftData holds the canonical anchor history on-device (CloudKit is intentionally off — cloudKitDatabase: .none) and a single NotionSyncService is the only sync mechanism — pulls on launch, pushes dirty data on backgrounding. Notion is the source of truth for the wider ecosystem: the macOS Widgets bundle, Vi3 Signal’s Python email suite, and the legacy web companion all read from the same database. HealthKit supplies ambient context (steps, workouts, mindful minutes) on iOS without manual entry. XcodeGen generates the project from project.yml so the repo stays diff-friendly.

Results

  • Native iOS + macOS from a single SwiftUI codebase, on TestFlight at build 128
  • HealthKit integration pulls step, workout, and mindful-minute data into the Health domain automatically
  • Notion as sync backbone — the FlowOS Widgets, Vi3 Signal emails, and web companion all read the same data
  • Six life domains tracked daily — Health, Wealth, Creativity, Clarity, Exploration, Relationships
  • Manual weekly review — a guided flow that’s never auto-skipped; the point is to sit with the data