← David Wu4-week solo design case studyCase 01 · 2026
A private iPhone journal

LifeFlow.

LifeFlow: two iPhone screens in dark mode showing the Diary view (180-day heatmap, folders) and the Home dashboard (Good Evening greeting, 6-month activity heatmap, work, sleep, and steps cards).

A habit tracker that pulls your numbers from Apple Health automatically, then asks you one thing each evening: how did today feel?

TL;DRProblem. People start journaling and habit apps and quit. Logging is too much effort, and their data is scattered across apps.
Evidence. I surveyed 17 people. Those two frustrations topped the list, and 76.5% wanted their data to stay on the phone, not the cloud.
My role. Solo, four weeks: the survey, three design decisions, and all three screens.
Outcome. An iPhone journal that pulls your numbers from Apple Health automatically, keeps everything on the device, and asks one thing each evening.
Role
Solo
UX product designer
Timeline
4 weeks
concept → working build
Stack
Figma · SwiftData
Claude Code + Xcode
Year
2026
Spring
A look at the app: the home dashboard, the Trends page, and a step from the guided evening entry. Click any screen for a closer look. Each one is covered in detail below.

Most habit apps make you do the work, with badges to chase or numbers to type in by hand. LifeFlow does the opposite. It handles the logging, so the only thing it asks of you is a moment of reflection at the end of the day.

§ 01: The problem

Why do people quit journaling apps?

To find out, I surveyed 17 people: students, busy professionals, and a few long-term journalers who had given up. Their answers grouped into a few recurring frustrations.

Top frustrations, by mentions

17 surveyed users · multiple answers allowed
Takes too much time
3
Feels like a chore
3
I forget important details
3
Don't know what to track
3
Data spread across apps
2
Other
2
Privacy concerns
1
Fig. 1. Top reasons people quit, from the 17-user survey. Four frustrations tied at the top with 3 mentions each.

The answers point to two problems. The first is mental effort. Logging takes work, feels like a chore, is easy to forget, and makes people decide what to track before they even start. The second is that the data is scattered. The numbers sit in Apple Health, tasks sit in Calendar, and mood isn't recorded anywhere. Nothing pulls them together.

Privacy came up only once as a reason people quit. But when respondents rated the app they wanted, on-device privacy ranked high: 76.5% rated it 4 or 5 out of 5. So privacy was a minor reason to quit but a top requirement for the app itself. The two findings shaped different parts of the design.

§ 02: The problem · what the survey said

Four findings that drove the design.

Before opening Figma, I read through every survey response and pulled out the patterns. Four findings drove the main design decisions. Each one is paired with the chart it came from below.

65%

Wanted automation with a quick personal check-in

People didn't want it fully manual or fully automatic. 11 of 17 respondents preferred a mix: track the numbers automatically, then ask a few short questions in the evening. That became the way LifeFlow works.

Preferred interaction model

17 surveyed users · pick one
Hybrid: auto + quick questions
11
Fully automatic
3
Manual entry only
3
Fig. 2. Preferred interaction model. The mixed mode got 11 votes, about 3.7 times as many as either all-manual or all-automatic.
1.82/5

Location logging ranked dead last

Auto task and goal tracking topped the list at 3.94/5. The combined daily overview came next at 3.76/5. Location logging scored 1.82/5, the lowest of the six features, so I cut it from V1.

Feature interest, rated out of 5

17 surveyed users · average rating
Auto task & goal tracking
3.94
Combined daily overview
3.76
Focus / deep-work timers
3.47
Food intake logging
3.41
Sleep tracking
3.18
Location auto-logging
1.82
Fig. 3. Feature-interest ranking, average rating out of 5. Location tracking scored 1.82, the lowest of the six, and was cut from V1.
76.5%

Rated on-device privacy 4 or 5 out of 5

64.7% gave it a perfect 5/5. I treated privacy as a requirement rather than an optional feature, and built the app to store everything on the device, with no cloud uploads and no servers. The data stays private because it never leaves the phone.

0.0%
rated on-device privacy 4 or 5 out of 5
0.0%
gave privacy a perfect 5 out of 5
Fig. 4. Privacy-importance ratings from the 17-user survey. 76.5% rated on-device privacy 4 or 5 out of 5, and 64.7% gave it a perfect 5.
0

Respondents picked monthly subscription

Of the four pricing options I offered, monthly subscription got zero votes. Free trial first led at 10 votes, and one-time purchase came second at 4. LifeFlow runs fully offline with no recurring server cost, so a one-time purchase covers the app without ongoing fees.

§ 03: The solution · three hard decisions

Where the trade-offs forced a choice.

Three design decisions involved a clear trade-off. For each one, I list what it gave up and what I chose.

01

Phone-only storage, no cloud sync

The conflict: Storing data only on the device means users can't log in from a web browser, can't sync to a second phone, and can't recover anything if the device is lost.

The choice: I went fully offline. I gave up web access and multi-device sync so the data stays on the device. For a personal diary, I prioritized keeping the entries off any server over cross-device access.

02

No streaks, no badges, no gamification

The conflict: Daily streaks, badges, and social sharing are the standard playbook for keeping people in the app. Removing them costs measurable engagement.

The choice: I removed all of it. The app shows patterns in the user's own data instead of using streaks or badges to drive return visits. Its purpose is to help the user review their behavior, not to maximize time in the app.

03

Stitch together data that lives in three different places

The conflict: Tasks are in Calendar, sleep and steps are in Apple Health, and stress and mood aren't recorded anywhere. Nothing connects all three. On top of that, Apple Health counts some data twice between the Watch and the iPhone, so it has to be cleaned up.

The choice: I built one layer that pulls all three sources together, removes the duplicates, and fills in the missing piece through a 60-second evening check-in. Sleep, work, and mood then appear together in one place.

§ 04: The solution · what I designed

Three screens that collect the data automatically.

The app runs on the phone and gathers the day's numbers in the background. It asks the user only for the evening reflection. By the time you open LifeFlow at 10pm, most of the data entry is already done.

01

The home dashboard

Native dark mode (#000000 background, #1C1C1E panels) to reduce eye strain. A 6-month heatmap replaces the usual streak counter and shows activity over time. Below it, four metric cards (Work Time, Tasks Today, Sleep, Steps) fill in automatically from HealthKit. A single neon-green accent color highlights the active state; the rest of the screen is neutral.

LifeFlow home dashboard on iPhone in dark mode. Good Evening greeting, day-logged badge, 6-month activity heatmap with neon-green-to-yellow gradient cells, four metric cards: Work Time 4h 12m (+12% from yesterday), Tasks Today 12/15, Sleep 7h 45m, Steps 8,432. Quick Actions row below: Tasks, Log Day, Schedule, Thoughts. Tab bar: Home, Trend, Diary, Setting.
Fig. 5. Home dashboard. The 6-month heatmap sits at the top, with the four metric cards below it.
02

The Trends page

Most trackers show each metric separately. The Trends page places sleep, work, and activity together so they can be compared. A segmented control switches between Daily, Weekly, Monthly, and 6-month views, and each data set uses a chart type suited to it. Putting the metrics on one screen lets the user compare them directly, for example sleep against the next day's work hours.

LifeFlow Trends page on iPhone. D/W/M/6M segmented control at top with D selected. Sleep card showing bed time 11:30 PM, wake up 8:15 AM, 7h 45m. Time at Work card showing arrive 08:45 AM, depart 04:57 PM, 8h 42m (+27 min). Activity card with 8,540 steps and 65 min exercise time, biking and strength training entries. Feeling Today: Amazing. Tasks Completion: 12/15. Schedule entry: Product Strategy Sync 10:00 to 11:30 AM with 'Review design system specs' subtask.
Fig. 6. Trends page. The segmented control fits four time scales into one screen, and the chart types are varied on purpose so it's easier to spot patterns across the different numbers.
03

The guided evening entry

The Evening Entry flow breaks logging into seven small steps. The early steps are low-effort taps: confirming a pre-filled location, checking off what got done, and setting a mood on a slider. The open-ended writing comes last, after the quicker steps are complete.

Five-screen iPhone flow showing the LifeFlow Evening Entry: (1) Diary view with 128 entries this year, Memory Map, and folder list. (2) Suggested Place: pre-filled location chips (ASU Poly, Work, Gym), Current Location and Manual Location buttons. (3) Goals: confirm what got done, with checkbox items. (4) Activities: 8,540 steps taken, 65 min workout time, biking and strength training rows. (5) Feelings: sliders for Mood, Stress, Energy.
Fig. 7. The full Evening Entry flow. Each step asks for one thing, starting with the quick taps and ending with the open writing.
§ 05: The result · price and privacy

Why LifeFlow uses a one-time purchase.

Many habit trackers run on a subscription that funds servers and data collection. LifeFlow has neither, so that model does not apply. When I asked the 17 respondents which pricing model they'd accept, monthly subscription got zero votes. It was the only option that got none.

Which pricing model would you accept?

17 surveyed users · pick one
Free trial first
10
One-time purchase ($9.99)
4
Free limited version
3
Monthly subscription
0
Fig. 8. Pricing preferences from the 17-user survey. Free trial first got 10 votes; monthly subscription got 0.

Because LifeFlow runs entirely on the device, there are no servers to pay for and no data pipeline or analytics to run. The pricing is a one-time purchase with an optional free trial first, which was the most common preference in the survey. The user owns the app, the data stays on the phone, and the app collects no information beyond what it stores locally.

The trade-off. The pricing model affects how the app is built. A subscription requires servers and ongoing features to justify the recurring charge. A one-time purchase removes that requirement, which is consistent with keeping the app fully on-device.

§ 06: The result · what's next

From four-week prototype to shipped app.

LifeFlow is a working iOS prototype, not a static Figma mockup. It reads real HealthKit data on the device, so I could test the design against real sleep, steps, and work hours instead of placeholder numbers. I specified every screen, layout, and data binding, and the Swift code was AI-assisted.

Xcode workspace screenshot. Project navigator on the left shows IRONCLAD project structure with Core, Models, Services, Views (Diary, EveningLog, Home, Settings, Shared, Trends) and Assets.xcassets. The editor shows MainTabView.swift with a SwiftUI preview ModelContainer setup using SwiftData. Right panel shows a live preview of the home dashboard rendering on iPhone 17 Pro: Good Evening, 1-month activity heatmap, Deep Work 3h 5m, Tasks Today 7/1, Sleep 7h 22m, Steps 8,234, Quick Actions row, and tab bar. Build Succeeded indicator at top.
Fig. 9. The Xcode workspace, showing the SwiftData preview container alongside the live SwiftUI render of the Home screen. Build Succeeded in the top chrome. The screens above are not mockups.

Like my other shipped work, I made every design decision myself, and AI handled the code so I could test the design as a live app.

The path from here to the App Store has three concrete phases.

The main takeaway from this project: the offline constraint shaped the design. Because there was no cloud sync, each screen had to work using only the data already on the phone, which made the screen organization a more deliberate decision than it would have been with sync available.