Bento
Overview
Bento is a cross-platform meal planning app for Android and web, built with Expo and React Native. It closes the whole food loop: plan meals on a drag-and-drop weekly calendar, log what you actually ate, track macros against adaptive goals, find and import recipes, and generate grocery lists that skip what's already in your pantry.
AI runs through Claude via Supabase Edge Functions: a week planner that drafts a full editable meal week from a short questionnaire, food suggestions that fill your remaining macros, ingredient parsing for URL recipe imports, and grocery list consolidation. Credentials never ship in the app — all AI and third-party calls stay server-side.
Led most development and design decisions end to end — product direction, data model, UI system, and the integration architecture.
Approach
- Offline-first from the ground up: PowerSync wraps Supabase so recipes, meal plans, food logs, and personal foods work fully offline and sync on reconnect.
- Unified food search across three sources — personal library, community database, and FatSecret — deduplicated by ID, with source badges and a barcode scanner that auto-fills nutrition labels.
- Adaptive macro goals: Mifflin-St Jeor BMR recommendations up front, then recalibration from real data — after a week of overlapping weight and calorie logs, the app computes actual TDEE from weight change vs. intake and proposes an updated calorie target.
- Community food database with a full moderation pipeline: user/moderator/admin roles, submission review queues, flagging with reasons, and trusted auto-approval for cached FatSecret results.
- Google Calendar OAuth two-way integration: planned meals sync out to a dedicated calendar, existing events overlay the week grid.
Challenges
Reconciling offline edits against the synced source of truth without losing user changes.
Making adaptive calorie math trustworthy — flagging suspicious days (crash-diet logs, unexplained gains) for exclusion before applying an adjustment, with a hard calorie floor.
Normalizing nutrition data across external APIs and community submissions with different food taxonomies.
Keeping a single React Native codebase honest on both web and Android, down to platform-split sync connectors.
Outcome
A working product deployed on Expo for Android and web with Cypress end-to-end coverage, live community moderation, and a five-chapter onboarding tutorial — the deepest single codebase I've owned across product, data, and integrations.