/food-card-lab
Food Card
Components from @iudofia2026/n2/cards · edit in n2 repo, updates here and on octa dashboard
Current
as shipped in octa/desktop · imported from @iudofia2026/n2/cardsChart tooltip · full data day
Meal ring tooltip · hover ring
blockedNutrientLedger
9 nutrient cups (fill = % of goal) + sodium ceiling · hover any cupMorning · empty
No meals logged yet today
Mid-day · partial
Lunch in · most floors mid-range
Evening · all hit
Every floor ≥100%, sodium still under ceiling
Sodium overshoot
Floors hit · sodium past 2300 mg cap
MacroGoalStrip
three states — under target · near goal · overUnder (morning)
On track (afternoon)
Over goal
No data
NovaDayDonut
size comparison · 40 / 52 / 64clean day
takeout day
no data
NovaMealRing
meal coverage + score statesExplorations
hero row iterations · May 15 2026v2 (macro strip) is the winner. Blue outline marks it.
v1 — Window + Gap
Rejected: eating window not compelling; gap showed −15.4h bug; neither col adds actionable insight at a glance.
v2 — Macro Goal Strip (WINNER)
Protein / Carbs / Cals each with fill bar + today vs goal. Fills rightward. Orthogonal to NOVA score. Goal: 220g / 350g / 2800. Color: green ≥100%, neutral 70–99%, dim <70%.
NovaMealRing · design rationale
3 equal sectors: breakfast (top-right) · lunch (bottom) · dinner (top-left). Center dot = NOVA score color.
Sector color = highest (worst) NOVA tier eaten in that slot. Dim sector = meal not logged.
Explorations
NOVA legend tooltip · Jobs/Ive · May 15 2026Sketch C is the winner. Blue outline marks it. Hover any tier in the legend bar on the live cell above.
A — Name only
Rejected: no visual hierarchy, header not big enough to feel intentional.
B — Big header, no bar
Strong. Clean. Trusts the user. No tier orientation.
one ingredient
C — Big header + description + scale bar (WINNER)
Header unmistakable. Description concrete. Scale bar orients within the 4-tier system instantly.
D — With today's %
Rejected: mixes legend (definition) with chart data (today). Column tooltip already shows %.
Explorations
NutrientLedger · Jobs/Ive · May 21 2026Sketch C* — Nutrient Ledger — is the winner. Blue outline marks it. 9 floor-bars + 2px divider + sodium ceiling-bar with baked 80% / 100% ticks. Honest direction encoding: floors fill left-to-right, ceiling fills right-to-left.
A — Compass
Radial spokes. Rejected: ornament-risk, requires decode, sodium as inverted spoke = special grammar.
iron
│
omega╲│╱calcium
vitD──●──magnes
vitC ╱│╲potass
fiber ┼ zinc
sodium▼B — Dahlia
10 petals. Rejected: charm-led, low resolution at 280px wide, sodium-fold = theatre.
✿ ✿ ✿
✿✿✿
✿ ● ✿
✿✿✿
✿ ✿ ✿
sodium folds inC* — Nutrient Ledger (WINNER)
9 nutrient cups in a row, each filling like water to % of goal. Floor cup at 100% → chromatic green (#2db89a). Sodium is a ceiling: amber (#ee9b00) at 100%, red (#bb3e03) at 120%. Hover any cup for the exact total / goal.
D — Honeycomb matrix
Discrete cells fill in milestone steps. Rejected: quantized, gamified tone, loses continuous resolution.
●●●○○ iron ●●●●○ calcium ●●●●● magnesium ●●○○○ potassium ●●●●● zinc ───── ○○●●●⚠ sodium