Project Details
- My role
- Product design · UI design · Code
- Date
- 2026
- Tools
- Figma, SwiftUI, Xcode, Claude Code, Next.js, Tailwind CSS, Cloudflare Workers
- Platform
- Native iPhone app in SwiftUI; web app for phone and laptop
- Figma
- Design file
- Status
- In daily use at home since October 2026
How it’s organised
Three levels, never more: a tab, a page, a sheet. Sheets rise over the page and slide away, so you never lose your place; anything you do daily is one tap from a tab. Tap any thumbnail to see the screen.
HomeWhat’s next, now
- Lunch · Dinner · Workoutpage
- Swap a dishsheet
- Pick a drinksheet
- Meal details + supplementssheet
- Now serving → receiptin place
- Snacks switchin place
- Snack pickersheet
KitchenWhat we can cook
- Recipespage
- Shelf → deckpage
- Recipesheet
- Step photosfull screen
- Fridgepage
- Item note → tossin place
- Snackspage
- Pantrypage
+Bring things in
- Grocery receiptsheet
- Restocks the fridgein place
- Background videossheet
CalendarWhat we ate
- Monthpage
- Glass drop picks a dayin place
- Daypage
- Write the notein place
- Arrange modein place
- Receiptfull screen
MeWho it’s for
- Profilepage
- Editsheet
- Background videospage
- Settingspage
pagesheetin placefull screen
The final version
Every page and interaction below is the live app, screen-recorded on a phone, not a mockup. They follow a day in the order we meet them.
First open
A scrapbook of our own food, then four short questions, one page each. The cycle question only appears when it applies.
Today, as one sentence
The meal reads the way you’d say it. Supplements sit in the same sentence, timed by how they absorb. Serving prints a receipt, and the printer keeps printing.
Getting around
The tab bar is a drop of Liquid Glass, rendered pixel by pixel. The same glass picks days in the calendar.
The kitchen
What we can cook, what’s in the fridge, and what we snack on, each with its own physical metaphor.
The calendar
Apple Calendar’s month, filled with the food we actually cooked. A day is one page: write on the yellow note, then arrange the photo, stickers and receipts around it.
On the web
The same app on a laptop. It keeps the phone’s rhythm — one part of the day at a time, sheets that rise — but spreads out: the kitchen shows fridge, snacks and pantry side by side, and the calendar and day pages go landscape.
Native iOS
The same app rebuilt in SwiftUI for iPhone: system Liquid Glass, haptics, and real physics in the fridge. Recorded on the iOS simulator.
Four decisions that shaped it
Out of 114 iterations, these four changed what the app is. Each started from something that felt wrong in daily use.
From a tracker to one meal
ProblemThe first version was a tracker: fourteen numbers and every meal at once. We opened it, felt judged, and closed it.
DecisionShow only the meal that’s next, written the way you’d say it — dishes in circles you can tap to swap, calories as one figure, supplements in the same sentence.
WhyThe real job is deciding what to eat. Tracking is a side effect, so it shouldn’t be the first thing you see.
Real food, not placeholders
ProblemRecipes were a grid of look-alike AI icons. Nothing said “this is what we’ll actually eat”.
DecisionEvery dish became a polaroid of the real plate from the tutorial we cook from; shelves for mains, greens and soups; step photos you can zoom.
WhyTrust comes from recognising your own food. Real photos made her pick dishes faster and argue less.
Deciding becomes a ritual
ProblemMarking a meal eaten was a checkbox. It was easy to forget and gave nothing back.
DecisionTapping “Now serving” prints a receipt line by line; double-tap it once eaten and it files itself into the calendar.
WhyA small physical moment turns a chore into a habit — and the receipts quietly become the food diary.
A diary you collect
ProblemThe calendar was a page of instructions. There was no reason to come back to it.
DecisionApple Calendar’s familiar month, filled with sticker piles of what we cooked; a day is one page with a note to write on and the meal’s photo and receipts to arrange.
WhyBorrowing the platform’s structure kept it instantly readable; the food is the only new thing, and it fills up as you live.
In Figma
Every screen was redrawn in Figma as the code changed, and every version is kept. Open the Figma file →
Design system
Rules for every screen, in the format I used for TikTok’s game templates. Every number is measured from the live app.
The meal is one sentence on a photo. Sizes, the button and the tab bar are fixed so every meal reads the same.
Every quick choice is a sheet that rises to 62% and pulls up to 92%. One button shape, 44 tall.
Each tab is a real object: shelf, fridge, basket, rack. Same control on top, same tab bar below.
The glass drop is the only “selected” state. Today is always the red pill. A day is a page of stickers.
Colour tokens with their contrast, the type scale, and the accessibility rules.
Accessibility
- WCAG AA contrastFour colours darkened until text passed 4.5:1.
- Bigger tap targetsPage dots grew from 6 to 24 px.
- VoiceOver labels43 icon buttons say what they do.
- Reduced motionFloating food and glass hold still when asked.
Every version, screen by screen
The app, screen by screen
Every screen, version by version — and the one reason each changed.
01 · Launch

02 · Welcome & sign-up







03 · Home · Lunch & Dinner











04 · Now serving · Receipt





05 · Home · Workout






06 · Snacks picker







07 · Pick a dish · Edit the meal






08 · Kitchen · Recipes












09 · Recipe







10 · Kitchen · Fridge






11 · Kitchen · Snacks





12 · Kitchen · Pantry



13 · Calendar · Food diary








