Case study
Fuel
A calorie tracker with no account, no streak, and no opinion about your week.
Context
A calorie tracker for iOS 26, built in SwiftUI with SwiftData. Everything lives on the device — no account, no cloud, no sync, no backend of any kind. There is no Levo Studio server involved because there is no Levo Studio server.
Log a meal by photographing it, typing a sentence, or picking something you've eaten before. The estimate comes from a language model, and the model is yours: you bring your own Anthropic or Mistral key, it stays in the Keychain on that one device, and the request goes straight from your phone to the provider. Nothing is written down anywhere — not the key, not the photo, not the sentence, not the reply. The only place a meal exists is its entry in your own database.
Source-available on GitHub.
Why I built it
Every tracker I tried had solved a different problem than the one I have. They wanted a streak. They wanted a weekly report. One made me tap through nine onboarding screens to find my "wellness archetype" before it would let me type in a banana.
I own a kitchen scale and I'm reasonably careful with it. I just wanted somewhere to put the number afterwards, in under ten seconds, without the app turning it into a personality. So the boring parts got the attention instead:
The estimate is a first draft, not a verdict. Models get things wrong — they'll see rice and miss the oil. Every recognised item can be thrown out, retyped, or added to, and the moment you change one the button stops saying Add and starts saying Re-analyse. Correcting a scan shouldn't mean starting one over.
r50g means fifty grams raw. Rice is weighed dry and eaten cooked, and those are wildly different numbers. Say 300g rice and it's the plate; say r300g rice and it's the bag. No other tracker I've used has a way to tell it which one you meant.
Snack isn't a time of day. Most apps hard-code a window — 15:00 to 17:59 — which makes an entry at 23:30 a snack and an entry at 16:00 on a day you skipped lunch also a snack. Neither is true. Breakfast, lunch and dinner are each claimed once a day by whatever lands in them first; a snack is whatever falls in the gaps.
Count-only mode is a different screen, not a greyed-out one. No goal, no ring. The ring is the goal.
Bringing your own key isn't a cost-saving trick — it's the reason the app can promise anything. There's no proxy to leak through and no subscription to cancel.
Stack
Links
Next