# IveEaten Food Memory App

> A Flutter mobile app for remembering restaurants and dishes, with offline Hive storage, Riverpod state, cloud sync history, photos, tags, ratings, and export tools.

- URL: https://mandalsuraj.com/blog/iveeaten
- Author: Suraj Mandal (https://mandalsuraj.com)
- Published: 2025-12-30
- Project date: 2025-08-20
- Tags: flutter, mobile, offline-first, firebase, appdev

![IveEaten Food Memory App cover](https://mandalsuraj.com/images/blog/iveeaten/cover.png)

IveEaten is a private food journal. It remembers **restaurants, dishes, ratings, photos, and notes** after discovery apps stop being useful.

The app works without an account. It saves each change on the device first and uses cloud sync only when the user asks for it.

## Visual Proof

![IveEaten home screen](https://mandalsuraj.com/images/blog/iveeaten/home.png)

![IveEaten settings and sync screen](https://mandalsuraj.com/images/blog/iveeaten/settings.png)

![IveEaten mobile screenshot from fresh capture](https://mandalsuraj.com/images/blog/iveeaten/mobile-home.png)

![IveEaten Pixel 7 mobile screenshot](https://mandalsuraj.com/images/blog/iveeaten/mobile-pixel7.png)

## Current Stack

The current app uses Flutter, Dart, Riverpod, go_router, Hive, Firebase Auth, Cloud Firestore, geolocator, image_picker, photo_view, and Material 3.

It moved from React Native and Expo to Flutter. Riverpod replaced hooks, go_router replaced Expo Router, Hive replaced AsyncStorage, and Flutter widgets replaced the old UI stack.

## Data Model

Restaurants can store an address and GPS location. Dishes can store a rating, description, notes, price, tags, and up to five photos.

Hive saves each change first. This keeps the full journal available offline.

## State And Sync

Riverpod providers update local state, then start optional Firebase sync for signed-in users. Smart sync uses the last change when local and cloud copies conflict.

Sync failure does not block app startup. Users can also choose one-way upload or download.

## Data Ownership

Settings include sign-in, sync, upload, download, JSON export, JSON import, and local data removal. Distance sorting and search also work from the local data.
