Patterns

Component library

50

100

200

400

500

700

900

Used only when the app is asking the user something. Never decorative, never "premium".

50

100

200

400

500

700

conf.high

conf.med

conf.low

protein

carbs

fat

Seen — measured from the photo. Label — read off a barcode, the only exact case. Guessed — reasonable inference from what's visible. Unknown — the camera physically cannot establish it. Never show a number without one of these.

White rice

210g · cooked

270

Cooking fat

Not visible in the photo

≈126

Brand Ask Neutral Info Danger Large
Fine
28/100
Low
88/100
Out
100/100
Breakfast 310 Lunch 649 Snack 164 Dinner —
SMTWTFS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Protein

85g left

Carbs

133g left

Fat

31g left

On Off

Every kcal and gram figure uses .num for tabular alignment. Integers only — no fractional grams, ever. A total must always equal the sum of its parts — in an app about honest arithmetic, a headline that does not reconcile with its own rows is the worst possible bug.

Rice270
Chicken212
Cooking fat126
Coleslaw41
Total649

Nothing logged yet

Your first meal takes about five seconds.