Swimming mark
MascotThe logomark patrols back and forth, turning in 3D at each end so the front always leads. A looping brand mascot.
The brand system
Once the web UI library is locked, these five screens are the next bench. The brand’s central interaction — the warn moment after a scan — leads. Mobile-first, 390×844, light mode for v1.
Camera-first capture: barcode, label, or menu item. Big tap target, low chrome, the viewfinder does the talking.
The brand’s central interaction. The score, the recommendation, and the canonical no-color warn pattern. One sentence in plain language — never a chart.
The home base. Recent scans, your watchlist, and a single primary action — never a feed.
What you’ve eaten, when, and what we said about it. Tabular numerals, GI scores aligned column-to-column.
Categories you’re tracking — rice bowls, sauces, drinks. The list earns its place by surfacing repeat offenders before you reach.
Small, triggered effects — not interactive toys. Loading states, entrances, and quiet status loops that make the app feel alive while data lands. In React Native these are built with Moti and Reanimated. Every one is decel-only — no bounce, no overshoot — and goes still for anyone who asks for reduced motion. The previews below loop so you can feel the timing.
The logomark patrols back and forth, turning in 3D at each end so the front always leads. A looping brand mascot.
Scan result and log rows hold their shape while data loads — a soft sweep, never a spinner on a blank screen.
The GI score counts up to its value as the result lands. It arrives once and settles — no bounce.
The “analyzing” heartbeat while the camera reads a label. Calm, infinite, low-attention.
Screen content fades and rises a few pixels on mount. Decel only — it arrives, it doesn’t spring.
Log and watchlist rows cascade in one after another, ~90ms apart. Order you can feel.
The quiet loop for the moment between a scan and its result. One arc, one direction.