Skip to main content
zzoo.dev

Mealio — Photo-First Meal Tracking App

A cross-platform mobile app that replaces tedious food logging with camera-based meal capture. Built with React Native/Expo and a Rust API, deployed to App Store, Play Store, and GCP Cloud Run.

React NativeExpoTypeScriptRustAxumPostgreSQLNeonCloudflare R2GCP Cloud RunPulumi

Problem

Most meal tracking apps demand tedious manual input — searching databases, weighing portions, typing descriptions. The friction is so high that users abandon logging within days. I wanted a meal tracker that felt as natural as taking a photo: snap, tag, done.

Solution

Mealio is a photo-first meal tracking app designed around a single principle: log a meal in under 15 seconds. The camera is the primary interface. Users snap a photo, add optional nutrition details, and build a visual food diary over time.

Key Design Decisions

  • Camera-centric UX — The capture flow is the core experience. Photo first, details optional. This dramatically lowers the barrier to consistent logging.
  • Dual-mode architecture — Guest mode (local storage, max 10 entries) lets users try the app instantly. Authenticated mode unlocks cloud sync, unlimited entries, and statistics.
  • Feature-Sliced Design — The mobile codebase follows strict layer boundaries (app → widgets → features → entities → shared) for maintainable growth.
  • Rust API — Chose Axum over Node.js for type safety, performance, and memory efficiency on Cloud Run's autoscaling (0–3 instances).

Results

  • 15-second capture flow — From camera tap to saved entry, consistently under 15 seconds
  • Cross-platform — Single codebase serving both iOS (App Store) and Android (Play Store)
  • Zero-to-three autoscaling — Cloud Run scales to zero when idle, keeping costs minimal
  • 9 database migrations — Stable schema evolution without downtime
  • 4 CI/CD pipelines — Automated API deploy, mobile CI, EAS builds, and OTA updates