A Flutter application for managing household groceries with storage tracking, shopping lists, expiry notifications, and barcode scanning.
- Email/Password Sign Up and Login
- Email Verification & Password Reset
- Google Sign-In Integration
- Secure Authentication via Firebase
- Manage Multiple Storage Areas (Refrigerator, Freezer, Pantry, etc.)
- Track Product Details:
- Name
- Category
- Manufacturing Date
- Expiry Date (with alerts)
- Quantity and Unit
- Additional Notes
- Details Recognition using OpenFoodFacts API
- Add Items with Quantity & Units
- Real-time Updates
- Mark Items as Complete
- Batch Delete Completed Items
- Quick Add Functionality
- Barcode Scanning for Quick Item Addition
- Scan Barcodes to auto-fetch product details via OpenFoodFacts API
- Capture and Upload Images for grocery items
- OCR Recognition for expiry dates
- Optimized for Mobile & Tablet
- Portrait & Landscape Support
- Adaptive Layouts for Different Screen Sizes
- Frontend: Flutter
- Backend: Firebase
- Authentication
- Cloud Firestore
- Real-time Database
- External API: OpenFoodFacts API for product details
- Flutter (Latest Version)
- Dart SDK
- Firebase Account
- Android Studio / VS Code
- Git
- Clone the repository
git clone https://github.com/Black-Lights/grocery_app.git - Navigate to the project directory
cd grocery_app - Install dependencies
flutter pub get -
Configure Firebase
- Create a Firebase project
- Add Android/iOS apps in Firebase console
- Download & add configuration files
- Enable Authentication methods (Email/Password & Google Sign-In)
- Set up Cloud Firestore
-
Run the app
flutter run rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
match /areas/{areaId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /shopping_list/{itemId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
} lib/
βββ models/
β βββ area.dart
β βββ product.dart
β βββ shopping_item.dart
βββ services/
β βββ firestore_service.dart
β βββ shopping_service.dart
β βββ barcode_scanner.dart
β βββ openfoodfacts_service.dart
βββ pages/
β βββ login.dart
β βββ signup.dart
β βββ forgot_password.dart
β βββ verify.dart
β βββ homepage.dart
β βββ shopping_list_page.dart
β βββ product_details_page.dart
β βββ settings_page.dart
βββ main.dart
- Default storage areas provided
- Add custom storage areas
- View products by area
- Track expiry dates with notifications
- Manage quantities
- Add products with details
- Track expiry dates (with alerts)
- Monitor quantities
- Add notes & categorize products
- Scan barcodes for quick entry
- Fetch product details from OpenFoodFacts API
- Quick add items
- Specify quantities & units
- Mark items as purchased
- Clear completed items
- Real-time updates
- Barcode scanning for faster entry
The app is designed to work seamlessly across different devices and orientations:
- Portrait: Optimized single-column layout
- Landscape: Adapted two-column layout
- Enhanced spacing & typography
- Optimized input fields
- Better use of available space
- Side-by-side layouts where appropriate
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Firebase for backend services
- Flutter team for the amazing framework
- GetX for state management
- OpenFoodFacts for barcode product details
- All contributors and testers
Project Link: https://github.com/Black-Lights/grocery_app
- Enhanced Product Image Support
- Improved Expiry Recognition using OCR
- Shopping List Sharing
- Detailed Statistics & Analytics
- Multiple Themes
- Language Support
Made with β€οΈ by Ammar and Moldir




