A comprehensive Flutter mobile application for managing recipes, meal planning, and cooking with an intuitive user interface and powerful features.
Danial Kaltay - 230103193@sdu.edu.kz - @Euc1d
Gaziz Nurgeldy - 230103167@sdu.edu.kz
SDU University
Mobile Application Development Course
December 2025
Recipe Manager is a full-featured mobile application developed as a team project for managing recipes, meal planning, and cooking. Built with Flutter and Firebase, it provides a seamless cooking experience with features like cooking timers, shopping lists, and personalized recipe collections. The app includes a curated collection of 10 traditional Arabic recipes and allows users to create their own recipe database.
- User Authentication - Secure registration and login with Firebase Auth
- Recipe Management - Full CRUD operations for personal recipes
- Advanced Search - Real-time search with category filters (Breakfast, Lunch, Dinner, Dessert, Snack)
- Favorites System - Save and organize favorite recipes with heart icon
- Smart Shopping List - One-click ingredient addition from recipes
- Cooking Timer - Built-in countdown timer integrated with recipe cooking time
- Push Notifications - Recipe reminders and cooking alerts
- Dark Mode - Complete dark theme support with smooth transitions
- Profile Management - Edit profile with local avatar photo storage
- β° Smart Cooking Timer - Automatically pre-set from recipe cooking time
- π One-Click Shopping - Add all recipe ingredients to shopping list instantly
- π Default Recipe Library - 10 curated traditional Arabic recipes (Hummus, Falafel, Shawarma, etc.)
- π± Responsive UI - Beautiful Material Design 3 interface
- π Intelligent Search - Search across recipe titles, descriptions, and ingredients
- πΎ Local Photo Storage - Profile photos stored locally using SharedPreferences for fast access
- π¨ Theme Persistence - Dark mode preference saved across sessions
- Flutter 3.x - Cross-platform mobile framework
- Dart - Programming language
- Provider 6.x - State management solution
- Material Design 3 - Modern UI design system
- Firebase Authentication - User authentication and authorization
- Cloud Firestore - NoSQL database for recipes and user data
- Flutter Local Notifications - Push notification system
- Shared Preferences - Local data persistence
- Image Picker - Camera and gallery integration for profile photos
dependencies:
firebase_core: ^2.24.2
firebase_auth: ^4.15.3
cloud_firestore: ^4.13.6
provider: ^6.1.1
shared_preferences: ^2.2.2
flutter_local_notifications: ^16.3.0
image_picker: ^1.0.7
url_launcher: ^6.2.2lib/
βββ models/
β βββ recipe_model.dart # Recipe data structure
β βββ user_model.dart # User data structure
βββ providers/
β βββ auth_provider.dart # Authentication state management
β βββ recipe_provider.dart # Recipe state management
β βββ shopping_provider.dart # Shopping list state management
β βββ theme_provider.dart # Theme state management
βββ services/
β βββ auth_service.dart # Firebase Auth operations
β βββ database_service.dart # Firestore CRUD operations
β βββ notification_service.dart # Local notifications
β βββ shopping_service.dart # Shopping list operations
βββ screens/
β βββ login_screen.dart # Login page
β βββ signup_screen.dart # Registration page
β βββ home_screen.dart # Main recipe feed
β βββ recipe_detail_screen.dart # Recipe details view
β βββ add_recipe_screen.dart # Create recipe form
β βββ favorites_screen.dart # Favorites collection
β βββ shopping_list_screen.dart # Shopping list
β βββ profile_screen.dart # User profile
β βββ edit_profile_screen.dart # Profile editing
β βββ cooking_timer_screen.dart # Cooking timer
βββ main.dart # App entry point
Architecture Pattern: Provider Pattern + Service Layer
- Models - Data structures and business entities
- Providers - State management and UI logic
- Services - Backend communication and data operations
- Screens - User interface and navigation
- Flutter SDK (3.0 or higher)
- Dart SDK (3.0 or higher)
- Android Studio / VS Code with Flutter extensions
- Firebase project configured (instructions below)
- Android device or emulator (API level 21+)
- Clone the repository
git clone https://github.com/Euc1d/recipe-app.git
cd recipe-app- Install dependencies
flutter pub get- Configure Firebase
Create a Firebase project at Firebase Console
Enable the following services:
- Authentication (Email/Password)
- Cloud Firestore Database
- Storage (optional)
Download configuration files:
google-services.jsonfor Android βandroid/app/GoogleService-Info.plistfor iOS βios/Runner/
- Set up Firestore Security Rules
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 /recipes/{recipeId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
allow update, delete: if request.auth != null &&
resource.data.userId == request.auth.uid;
}
match /shoppingItems/{itemId} {
allow read, write: if request.auth != null &&
resource.data.userId == request.auth.uid;
}
}
}- Run the app
flutter runflutter build apk --releaseOutput: build/app/outputs/flutter-apk/app-release.apk
flutter build appbundle --releaseOutput: build/app/outputs/bundle/release/app-release.aab
flutter build ios --release- Launch the app - Opens on Login screen
- Create account - Tap "Sign Up" and register with email/password
- Load default recipes - Go to Profile β "Load Default Recipes" (10 Arabic recipes)
- Browse Recipes - View default and personal recipes on Home screen
- Search - Use search bar to find recipes by name or ingredients
- Filter by Category - Tap category chips (All, Breakfast, Lunch, Dinner, Dessert, Snack)
- Add to Favorites - Tap heart icon on recipe cards or detail page
- Create Recipe - Tap orange + button, fill form with ingredients and steps
- Shopping List - Open recipe β "Add to List" button β adds all ingredients
- Cooking Timer - Open recipe β tap blue clock button β auto-set timer
- Edit Profile - Profile β "Edit Profile" β change name, email, password, photo
- Dark Mode - Profile β toggle "Dark Mode" switch
- View Details - Tap any recipe card
- Edit Recipe - Only your own recipes (3-dot menu β Edit)
- Delete Recipe - Only your own recipes (3-dot menu β Delete)
- Share Ingredients - "Add to List" button on recipe detail page
- Home Screen - Recipe grid with search and category filters
- Recipe Details - Full recipe view with ingredients, steps, and actions
- Add Recipe - Form with dynamic ingredient/step fields
- Shopping List - Checkable items with swipe-to-delete
- Profile - User info with settings and actions
- Complete dark theme across all screens
- Smooth theme transitions
- Easy on the eyes for night cooking
- Firebase Authentication with email/password
- Secure password hashing (handled by Firebase)
- Session management with automatic token refresh
- User recipes are private (filtered by userId)
- Shopping lists are user-specific
- Profile data is protected by Firestore security rules
- Local photos stored in app-specific directory
- Input validation on all forms
- Error handling with user-friendly messages
- Secure API calls with Firebase SDK
- No hardcoded credentials
users/ - User profiles
{
name: "John Doe",
email: "john@example.com",
favoriteRecipes: ["recipeId1", "recipeId2"]
}recipes/ - Recipe database
{
title: "Chicken Shawarma",
description: "Marinated chicken with spices",
category: "Dinner",
cookingTime: 45, // minutes
servings: 4,
ingredients: [
"1 kg chicken",
"2 tsp cumin",
"Pita bread"
],
steps: [
"Mix spices",
"Marinate chicken",
"Grill and serve"
],
imageUrl: "https://...",
userId: "user123", // recipe owner
createdAt: 1702818000000 // timestamp
}shoppingItems/ - Shopping list items
{
name: "2 cups chickpeas",
isChecked: false,
userId: "user123",
recipeId: "recipe456",
recipeName: "Hummus"
}- Version Control - Git/GitHub for code management
- Code Reviews - Peer review before merging
- Task Distribution - Frontend/Backend split between team members
- Communication - Regular sync meetings and Telegram coordination
- Clean Architecture - Clear separation of concerns
- Error Handling - Comprehensive try-catch blocks
- Code Comments - Well-documented complex logic
- Consistent Styling - Unified code formatting
- Lazy Loading - Images loaded on-demand
- Efficient Queries - Indexed Firestore queries by userId
- State Management - Provider prevents unnecessary rebuilds
- Local Storage - SharedPreferences for quick access
- Loading Indicators - Clear feedback during operations
- Error Messages - User-friendly error descriptions
- Smooth Animations - Hero animations and transitions
- Responsive Design - Works on various screen sizes
- Social features (share recipes with friends)
- Recipe ratings and reviews
- Meal planning calendar
- Nutrition information calculator
- Barcode scanner for ingredients
- Export shopping list to PDF
- Multi-language support (English, Russian, Kazakh)
- Recipe import from websites
- Video tutorials integration
- Voice commands for cooking
- Unit and integration tests
- CI/CD pipeline setup
- Cloud Functions for advanced features
- Firebase Storage for user-uploaded images
- Offline mode with local database
- Analytics integration
- Profile photo displays only first letter on some devices (workaround: reload profile)
- Timer notification may not show on some Android versions (check notification permissions)
This project helped us learn:
- Flutter widget tree and state management
- Firebase integration (Auth, Firestore, Notifications)
- Provider pattern for scalable state management
- RESTful patterns in NoSQL databases
- Mobile UI/UX design principles
- Git collaboration workflows
- Debugging and error handling in production apps
This is an educational project. For questions or suggestions:
- Create an issue on GitHub
- Contact team members via email
- Message on Telegram: @Euc1d
This project is created for educational purposes as part of Mobile Application Development course at Suleyman Demirel University.
- Flutter Team - For the amazing cross-platform framework
- Firebase - For backend services and real-time database
- Provider Package - For elegant state management
- Unsplash - For high-quality recipe images
- Material Design - For UI/UX guidelines
- Our Course Instructor - For guidance and support
- SDU - For providing learning opportunities
Danial Kaltay
π§ 230103193@sdu.edu.kz
π¬ @Euc1d
π GitHub
Gaziz Nurgeldy
π§ 230103167@sdu.edu.kz
University
Suleyman Demirel University
Almaty, Kazakhstan
Built with β€οΈ and Flutter by Danial & Gaziz