Skip to content

abdullahxdev/Ingridio

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ingridio

Snap your fridge. Cook what's already there.

An AI-powered recipe assistant that turns the ingredients you have on hand into recipes you can actually make β€” powered by Google Gemini vision and Firebase.


Flutter Dart Firebase Gemini

Cloud Run JWT License Platform


Demo Flow β€’ Features β€’ Architecture β€’ Quick Start β€’ Documentation


🎯 Why Ingridio?

You stare into your fridge. You have stuff. You don't know what to make. You scroll Pinterest for 20 minutes, give up, and order takeout.

Ingridio fixes that loop. Open the camera, point at your ingredients, and within seconds you have:

  • A precise list of what was detected
  • A ranked feed of recipes you can actually cook β€” sorted by how much of the dish you already own
  • A guided cooking mode that walks you through each step with auto-detected timers

No more "I have 90% of the ingredients" frustration. Ingridio tells you upfront.


✨ Key Features

πŸ” AI Vision Detection

Snap your fridge or pantry β€” Google Gemini 2.0 Flash identifies every visible ingredient and suggests recipes that fit.

🍳 Smart Recipe Matching

Substring-tolerant matcher ranks recipes by how much of the dish you already own. No surprise "missing ingredients" mid-recipe.

πŸ‘¨β€πŸ³ Guided Cooking Mode

Step-by-step instructions with auto-detected inline timers ("Simmer for 20 mins" β†’ tap to start a 20-min timer right there).

🌢️ South-Asian + Global Catalogue

Pakistani biryani, kebabs, nihari alongside Italian pasta, Mediterranean bowls, and healthy meal-prep classics.

πŸ” Firebase Authentication

Email/password signup with JWT-based ID tokens (RSA-signed, verifiable on jwt.io). Persistent sessions across app launches.

☁️ Real-Time Cloud Sync

Saved recipes, pantry items, and preferences sync to Cloud Firestore. Log out on one device, log back in elsewhere β€” everything's still there.

🌍 Multi-Language Ready

English (US), Urdu, and Arabic support baked into the preferences.

🎨 Modern Material 3 Design

Glass-morphism HUDs, bento-grid layouts, warm orange palette, Plus Jakarta Sans + Be Vietnam Pro typography β€” built for the eye.


πŸ“± Demo Flow

1. Onboarding 2. Sign Up 3. Scan 4. Match 5. Cook
Beautiful 4-page intro Firebase email/password Camera + Gemini vision Ranked by match % Guided steps + timers
πŸ” Email + JWT

🧩 Architecture

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚       Flutter App           β”‚
                    β”‚  (Android Β· Web target)     β”‚
                    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                         β”‚                 β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”˜                 └────────┐
                β–Ό                                   β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚   GeminiService     β”‚              β”‚  Firebase Services  β”‚
     β”‚  google_generative  β”‚              β”‚ ─────────────────── β”‚
     β”‚       _ai           β”‚              β”‚  Auth (JWT tokens)  β”‚
     β”‚                     β”‚              β”‚  Firestore (NoSQL)  β”‚
     β”‚ Vision β†’ JSON       β”‚              β”‚                     β”‚
     β”‚ Ingredients +       β”‚              β”‚  users/{uid}/       β”‚
     β”‚ Recipe suggestions  β”‚              β”‚    β”œ pantry/        β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚    β”” savedRecipes/  β”‚
               β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β–Ό                                     β–²
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                             β”‚
       β”‚ RecipeMatcher β”‚                             β”‚
       β”‚  (% match)    β”‚                             β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                             β”‚
               β”‚                                     β”‚
               β–Ό                                     β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
     β”‚   In-app State Stores (singletons)  β”‚         β”‚
     β”‚  ─────────────────────────────────  β”‚ β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚   PantryManager Β· SavedRecipesStore β”‚
     β”‚   CookedRecipesStore Β· RatingStore  β”‚
     β”‚   UserPreferencesStore              β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Zero backend code shipped by us. Firebase handles persistence + auth. Gemini handles vision. The Flutter app is the only thing we maintain.


πŸ—οΈ Tech Stack

πŸ“± Mobile

  • Flutter 3.x
  • Dart 3.x
  • Material 3 + custom design system
  • google_fonts for typography

🧠 AI

  • Google Gemini 2.0 Flash
  • google_generative_ai SDK
  • Vision-to-JSON pipeline
  • Graceful fallback on failures

☁️ Backend

  • Firebase Auth (JWT ID tokens)
  • Cloud Firestore (NoSQL, real-time)
  • Cloud Run (Nginx Alpine container)
  • Cloud Build (CI/CD)

πŸš€ Quick Start

Prerequisites

  • Flutter SDK 3.x+
  • Android Studio (with Android SDK + emulator)
  • A Firebase project (free tier works)
  • A Google AI Studio Gemini API key β€” free tier OK

Setup

# 1. Clone
git clone https://github.com/saadhtiwana/Ingridio.git
cd Ingridio

# 2. Install Flutter dependencies
flutter pub get

# 3. Add your Gemini API key (gitignored automatically)
echo "GEMINI_API_KEY=your_actual_key_here" > assets/.env

# 4. Drop your Firebase config (downloaded from Firebase Console)
# β†’ android/app/google-services.json

# 5. Boot an Android emulator (or plug in a phone with USB debugging)
flutter emulators --launch <emulator_id>

# 6. Run!
flutter run

That's it. The app will sign you up, sync to Firestore, and you're cooking. See DOCUMENTATION.md Β§15-17 for the full setup walk-through.


πŸ” Firebase Setup (one-time, ~10 min)

Click to expand step-by-step
  1. Create Firebase project at console.firebase.google.com β€” name it whatever you want.
  2. Add Android app with package name com.ingridio.ingridio.
  3. Download google-services.json β†’ drop into android/app/.
  4. Enable Email/Password auth: Build β†’ Authentication β†’ Sign-in method β†’ Email/Password β†’ Enable.
  5. Create Firestore database: Build β†’ Firestore Database β†’ Create β†’ Start in test mode β†’ pick closest region.
  6. Run flutter run β€” sign up, your data appears in Firestore Console in real time.

For production, tighten the Firestore rules:

match /users/{userId}/{document=**} {
  allow read, write: if request.auth != null && request.auth.uid == userId;
}

🎬 Demo Walk-through

Step What you do What it proves
1 Sign up with email + password Firebase Auth working β€” check Authentication β†’ Users in console
2 Pick cuisines on Personalize β†’ Save Preferences write to Firestore β€” check users/{uid} doc
3 Save any recipe (heart icon) Real-time Firestore write β€” check savedRecipes sub-collection
4 Profile β†’ "View Auth Token (JWT)" β†’ Copy β†’ paste at jwt.io JWT auth with decoded iss, email, exp etc.
5 Logout β†’ log back in Persistence across sessions
6 Tap scan FAB β†’ take a photo of food Gemini AI detection in action

πŸ“‚ Project Structure

lib/
β”œβ”€β”€ data/          Mock pantry + curated recipe catalogue
β”œβ”€β”€ logic/         Stores, matcher, design system, timer parser
β”œβ”€β”€ models/        Recipe, Ingredient, UserPreferences, ...
β”œβ”€β”€ screens/       13 screens β€” onboarding, auth, home, scan, cook, profile, ...
└── services/      AuthService (Firebase) Β· GeminiService Β· FoodDetectionService

See DOCUMENTATION.md Β§4 for the complete tree.


πŸ§ͺ Testing

flutter test
00:00 +7: All tests passed!

Unit tests cover the recipe matching algorithm and the step-timer regex parser.


πŸ“š Full Documentation

For deep technical detail β€” every store, every screen, every Firestore document shape, build pipelines, security considerations β€” see:

(22 sections, table-of-contents driven, fully indexed.)


πŸ“œ License

This project is licensed under the MIT License β€” see LICENSE for details.


Built with 🧑 in Flutter + Firebase

If you found this useful, drop a ⭐ on the repo.

About

Cook your food with AI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Dart 98.8%
  • HTML 0.3%
  • Ruby 0.3%
  • Swift 0.2%
  • Dockerfile 0.1%
  • PowerShell 0.1%
  • Other 0.2%