← back to projects

Personal project - 2025

Mimi Noms

A mobile nutrition tracker for cats, built to make daily feeding routines easier to log, review, and adjust for pet owners tired of juggling notes, labels, and memory.

  • React Native
  • Expo
  • Expo Router
  • Zustand
  • SQLite
9:41

Mimi - today

4 / 350

62% of
daily goal

Wet - breakfast
Dry - midday
Treat - afternoon

Role

Solo design & dev

Timeline

2025 - ongoing

Platform

iOS & Android

Status

In daily use

01 - Problem + product loop

Managing a cat's nutrition sounds simple until dry food, wet food, treats, portions, calories, and weight goals end up scattered across notes, labels, and memory.

The goal was never a veterinary tool. Mimi Noms is a routine tracker for organizing what was fed, how many calories it represents, whether the day is staying consistent, and how weight is trending over time.

The app is organized around a simple repeat-use loop: set up a profile, save foods once, log meals quickly, and review the daily summary.

  1. Profile
  2. Foods
  3. Goal
  4. Log meals
  5. Summary
  6. Trends

02 - Core features

Pet Profile

Weight, calorie goal, feeding notes, body condition.

Food Database

Dry, wet, treats, calories, serving size.

Feeding Log

Scheduled and unscheduled meals, timestamped.

Daily Report

Calories, breakdown, remaining budget.

Weight Check-ins

Weight and body condition over time.

Trends & Reusable UI

Calorie and weight trend views, built from shared cards, logs, and form components.

03 - App flow

  1. Pet profile
  2. Food database
  3. Add meal
  4. Daily summary
  5. Weight check-in
  6. Trends

04 - Technical build

Built with React Native and Expo, using Expo Router for navigation, Zustand for lightweight global state, and SQLite/local storage for an offline-first daily logging workflow. I treated it like a real product: 31 screens and flows built from 36 shared components, predictable local state, and a structure that can support sync or multi-pet profiles later.

Expo Router for mobile navigation
Zustand for lightweight global state
SQLite/local storage, offline-first
Reusable cards, forms, logs, summaries

05 - Data model

Five entities cover the app loop. Foods are saved once and reused across feeding logs, while summaries and check-ins are generated from the same records.

Pet

name, weight, calorieGoal, notes

Food

brand, type, calories, servingSize

Feeding

pet, food, amount, calories, time

WeightCheckin

pet, date, weight, bodyCondition

DailySummary

totalCalories, remainingBudget

06 - Screens

Dashboard overview

Daily goal progress, meals, and quick context.

Feeding plan

Scheduled meals planned against the daily calorie goal.

Add meal flow

Fast logging for dry food, wet food, and treats.

Food library

Reusable foods with serving and calorie details.

Trends/report

Calorie and weight context over time.

07 - Roadmap

current

Profile, food database, feeding log, estimated daily calories, reusable UI.

next

Weight trend charts, feeding reminders, better food search, improved reports.

later

Supabase sync, multi-pet support, barcode entry, export summary.

08 - What I learned

The hard part was not the screens. It was designing a data model and logging flow fast enough to actually use every day.

Daily-use apps need very low-friction input flows.
Pet nutrition tracking is both data modeling and UX.
Reusable components ease the jump to reports and analytics.
Health-adjacent apps need careful, responsible scope.

Built for nutrition tracking and routine planning - not veterinary medical advice.

Jenny Zhao · Mimi Noms · 2025