Magic in tracking. Mastery in planning β¨
A modern Flutter application for smart fridge management and recipe discovery. Track your ingredients, get expiration reminders, and find recipes based on what you have!
Developed by: Matteo Delogu Β· Filippo Paris Β· Alberto Brignola
- π Overview
- π± Key Features
- π Getting Started
- π Tech Stack
- π Project Structure
- π API Credits & Attribution
- π Security & Privacy
- πΈ Visual Preview
- π Project Statistics
- π License & Usage Terms
FridgeWizard is a smart inventory management app designed to help users reduce food waste and shop more consciously. By streamlining product registration via barcode scanning, the app tracks quantities and expiration dates, sending timely alerts for items nearing shelf life.
Beyond simple tracking, FridgeWizard transforms inventory into inspiration: it suggests recipes based on expiring ingredients and syncs meal plans directly to the device calendar. With personalized statistics on consumption habits and a customizable user profile, FridgeWizard turns pantry management into an efficient, zero-waste routine.
- Manual Entry: Add products manually with all details
- Barcode Scanning: Scan product barcodes for instant information using OpenFoodFacts API
- Expiration Tracking: Dynamic color-coded alerts for expiring items
- AI Translation: Automatic product name translation and generic extraction via Gemini AI
- Category Classification: Smart ingredient categorization with AI-powered recognition
- Detailed View: Edit, update, or delete products with ease
- Customizable Alerts: User-defined expiration warning periods (1-14 days)
- Search by Name: Find recipes using keywords from Spoonacular API
- Search by Ingredients: Get recipe suggestions based on your fridge contents
- Smart Matching: See how many ingredients you have vs. need for each recipe
- Detailed Instructions: Step-by-step cooking guides with images and timing
- Nutritional Information: Servings, cooking time, and ingredient lists
- Recipe Calendar: Plan your meals chronologically
- Shopping List: Automatically generated from planned recipes
- Smart Sync: Ingredients added to fridge are removed from shopping list
- Quick Add: Add shopping list items directly to fridge with pre-filled forms
- Basic Statistic Dashboard: Saved recipes and estimated savings (will be incremented)
- Custom Notifications: Push notifications for expiring items
- Configurable Reminders: Set expiration warnings (1 to 14 days before)
- Avatar Selection: Choose from 6 unique monster-themed avatars
- User Profiles: Sync data across devices with Firebase Authentication
- Dynamic Color Coding: Product cards change color based on expiration proximity
- Theme Support: Automatic dark/light mode switching (In Development)
- User-Specific Settings: Personalized notification preferences per account
- Natural language product addition
- Conversational recipe search
- Smart suggestions based on fridge contents
- Flutter SDK: 3.0 or higher (Install Guide)
- Xcode (for iOS development) or Android Studio (for Android)
- Firebase Project: Set up at Firebase Console
- API Keys (all free tier available):
- Spoonacular API (Get Free Key)
- Google Gemini API (Get Key)
-
Clone the repository
git clone https://github.com/yourusername/Project_App_Ricette_DIMA.git cd Project_App_Ricette_DIMA/app_ricette -
Install dependencies
flutter pub get
-
Configure Firebase
- Create a new Firebase project at Firebase Console
- Enable Authentication (Email/Password & Google)
- Enable Cloud Firestore database
- Download configuration files:
google-services.json(Android) β place inandroid/app/GoogleService-Info.plist(iOS) β place inios/Runner/
- or use the FlutterFire CLI:
dart pub global activate flutterfire_cli flutterfire configure
-
Set up API Keys
Create
.env:GEMINI_API_KEY=your_gemini_api_key_here GEMINI_MODEL=gemini-2.5-flash SPOONACULAR_API_KEY=your_spoonacular_api_key_here
β οΈ Note: Never commit API keys to version control. Add.envto.gitignore -
Run the app
# Check connected devices flutter devices # Run flutter run
- Flutter/Dart - Cross-platform UI framework (iOS & Android)
- Cupertino Widgets - Native iOS-style design components
- Firebase Authentication - Email/Password and Google Sign-In with OAuth 2.0
- Cloud Firestore - Real-time NoSQL database for user data synchronization
- Google Gemini AI - Product name translation, generic extraction, and categorization
- Spoonacular API - Comprehensive recipe database (640,000+ recipes)
- OpenFoodFacts API - Open product barcode database (2M+ products)
dependencies:
# Firebase & Authentication
firebase_core: ^2.24.2
firebase_auth: ^4.16.0
cloud_firestore: ^4.14.0
google_sign_in: ^6.2.1
# Barcode & Camera
mobile_scanner: ^5.2.3
# Networking
http: ^1.1.0
# Permissions
permission_handler: ^11.3.0
# Local Storage
shared_preferences: ^2.2.2
# Notifications
flutter_local_notifications: ^18.0.1
timezone: ^0.9.4
workmanager: ^0.9.0
# Calendar
device_calendar: ^4.3.2
# UI & Animations
lottie: ^3.1.0
# Testing
fake_cloud_firestore: ^3.0.0
firebase_auth_mocks: ^0.14.0
# AI Integration
google_generative_ai: ^0.4.6app_ricette/
βββ lib/
β βββ models/ # Data models
β β βββ ingredient.dart # Product/ingredient model
β β βββ recipe.dart # Recipe data model
β β βββ planned_meal.dart # Meal planning
| | βββ category_price.dart # Prices categorization
β β βββ category_mapper.dart # Ingredient categorization logic
β β
β β
β βββ screens/ # UI screens
β β βββ auth_page.dart # Authentication state handler
β β βββ login_page.dart # Login & registration UI
β β βββ home_page.dart # Main fridge view with navigation
β β βββ barcode_page.dart # Barcode scanning interface
β β βββ add_product_manual_page.dart # Manual product entry
β β βββ product_page.dart # Product detail & edit view
β β βββ recipes_page.dart # Recipe search interface
β β βββ show_recipe.dart # Recipe detail view
β β βββ missing_ingredient_page.dart # Missing ingredients for recipes
β β βββ settings_page.dart # User profile & settings
β β βββ saved_recipes_page.dart # Saved recipes list
β β βββ plan_page.dart # Meal planning
β β
β βββ services/ # Business logic & API integration
β β βββ FirestoreService.dart # Firebase CRUD operations
β β βββ BarcodeService.dart # OpenFoodFacts API integration
β β βββ RecipesService.dart # Spoonacular API wrapper
β β βββ gemini_service.dart # Gemini AI integration
β β βββ meal_planner_service.dart # Meal planning logic
β β βββ notification_service.dart # Push notifications (TBD)
β β
β βββ utils/ # Utility functions & constants
| | βββ app_events.dart # Notifier
β β βββ categories.dart # Ingredient categories
β β βββ is_tablet.dart # Device type detection
β β βββ my_theme_data.dart # Theme data & styles
β β
β βββ widgets/ # Reusable UI components
β β βββ nav_bar.dart # Bottom navigation bar
β β
β βββ firebase_options.dart # Firebase configuration
β βββ main.dart # App entry point
β
βββ assets/
β βββ avatars/ # User avatar images (6 monsters)
β β βββ alien.png
β β βββ mummy.png
β β βββ vampire.png
β β βββ wolf.png
β β βββ yeti.png
β β βββ zombie.png
β βββ lottie/ # Animation files
β βββ magic.json
β
βββ android/ # Android-specific configuration
βββ ios/ # iOS-specific configuration
βββ pubspec.yaml # Dependencies & assets
- β Firebase Authentication for secure login (OAuth 2.0)
- β User data isolation - each user's data is separated by UID
- β No sensitive data stored locally - API keys in separate file (gitignored)
- β HTTPS-only communications - all API calls are encrypted
- β Barcode processing - handled locally on device
- β Firestore security rules - read/write only for authenticated users
- β GDPR Compliance - user data handled per regulations
- Spoonacular - Recipe data and search (spoonacular.com)
- 640,000+ recipes with detailed instructions
- Free tier: 150 requests/day
- OpenFoodFacts - Product barcode database (openfoodfacts.org)
- Open database with 2M+ products
- Completely free and open-source
- Google Gemini - AI-powered text processing (ai.google.dev)
- Product name translation and extraction
- Category classification
| Home Screen | Barcode Scanner | Recipe Search |
|---|---|---|
![]() |
![]() |
![]() |
| Recipe Details | Profile & Settings | Login |
|---|---|---|
![]() |
![]() |
![]() |
- Lines of Code: ~10000
- Screens: 10+
- API Integrations: 3 (Firebase, Spoonacular, OpenFoodFacts, Gemini)
- Device plugins: 4 (Camera, Calendar, Notifications, SharedPreferences)
- Supported Platforms: iOS, Android
- Language: Dart
- Framework: Flutter 3.0+
FridgeWizard Β© 2026 All Rights Reserved.
No part of this project may be reproduced or used without permission. This project is developed for academic purposes as part of the DIMA (Design and Implementation of Mobile Applications) course at Politecnico di Milano.
Made with β€οΈ and Flutter





