Floor 05 / 05 — Case study Mobile app · iOS & Android · Health & nutrition

ZenFast

An app for intermittent fasting and eating well. Point your phone at a plate and ZenFast works out what's on it: every food, its portion, its calories and macros. One tap logs it against your day. Around that sit a live fasting timer, an AI coach, Apple Health sync, breathing sessions and social challenges.

Product
ZenFast, my own app
Role
Design, mobile and backend build
App
Expo SDK 54, React Native, TypeScript, Expo Router, Zustand
Backend
Supabase Postgres, Auth, Realtime and Edge Functions, OpenAI vision
01 · Your day

1,850 kcal goal

A 16:8 fast broken at midday. Breakfast is logged and 1,562 kcal remain.

02 · Add to lunch

Log with Coach

Type it, say it, or tap the camera.

03 · Point

Scan Food

A full-screen camera with Scan Food, Barcode and Food label modes, plus lens zoom.

12:24
04 · Snap

Analysing the photo

The photo goes to a Supabase Edge Function that calls a vision model. Progress shows each stage.

05 · Review

6 foods · 522 kcal

Each food with its portion, calories, protein, carbs and fat, all editable, with "Fix Issue" to correct the AI.

06 · Log

Added as one meal

Saved as a recipe group under Lunch. The day's totals and macro bars update straight away.

Recorded from ZenFast's own code in a phone-sized browser with sample data. The camera feed is a stock photo (CC0).

(01) — Overview

Logging food shouldn't feel like homework.

Most people stop tracking food because typing every ingredient is tedious. ZenFast turns logging into one photo. The app sends the image to an Edge Function, the vision model returns each food with an estimated portion, and the app shows it all as an editable list before anything is saved. If the AI gets something wrong, "Fix Issue" sends your correction back with the previous answer, and it tries again.

Food sits alongside fasting. The timer tracks the current fast through its stages (ketosis at 16 hours, deeper ketosis at 18, autophagy from 24), and the day's calories, steps and active minutes come together on one screen, synced with Apple Health.

  • PlatformsiOS · Android
  • LoggingPhoto · barcode · label · voice · text
  • Edge Functions5
  • Database tables50+
  • Health dataApple HealthKit
12:24
The ZenFast food scanner pointed at a plate of salmon
ScanScan Food, Barcode and Food label modes, with zoom across the phone's lenses.
12:24
Analysing the photo with a progress ring
AnalyseYour photo stays on screen while the progress ring runs through its stages.
12:24
Results: grilled salmon with avocado salad, 6 items, 522 kcal
ReviewEvery item is editable, with a meal total and its macro split.
12:24
Lunch logged as one meal
LoggedSaved as one meal under Lunch, with the remaining calories updated.
12:24

Time-lapse · six hours in ten seconds

(02) — The fast

A timer that knows where you are.

Pick a protocol (16:8, 18:6, OMAD and more) and the ring fills live, with the stage you're in, your start and target times, and a summary with a rating when you end the fast. Every fast is saved, feeding streaks, a history calendar and achievements.

  • 16:8 · 18:6 · OMAD
  • Fasting stages
  • Streaks
  • Reminders

(03) — How a photo becomes calories

Vision on the server, trust in the app.

API keys never ship in the app. The camera hands off to Supabase Edge Functions, and the app keeps the user in control: nothing is logged until they confirm it. Hover or tap a node.

Swipe the diagram sideways to see all of it →

(04) — The whole app

Five ways to log, one place to live.