Chef's Pocket is a mobile application developed with Flutter for the "Mobile App Design" (Progettazione di Applicazioni Mobili) course. It serves as a comprehensive digital assistant for cooking enthusiasts, allowing users to manage recipes, plan meals, and organize grocery lists efficiently.
- Course: Mobile App Design
- University: University of Udine
- Tech Stack: Flutter (Dart)
The application is organized into five main sections, accessible via a custom bottom navigation bar:
- Home: The central hub for discovering and browsing recipes.
- Saved Recipes: A bookmarking system to keep track of favorite dishes.
- Recipe Creation: A form-based interface allowing users to input and save their own custom recipes.
- Meal Planner: A calendar integration that allows users to schedule meals for specific days.
- Grocery List: An automated shopping list manager to track ingredients needed for planned meals.
The project follows a clean architecture pattern, separating the User Interface from the Business Logic.
The application uses the Provider package for state management to efficiently propagate changes across the app. The main providers initialized in main.dart are:
PlannerManager: Handles the logic for the meal calendar and scheduling.GroceryManager: Manages the state of the shopping list (adding/removing items).RecipeManager: Handles the CRUD operations for recipes.DirectoryManager: Manages local file storage paths and directories.
The source code in lib/ is organized as follows:
components/: Contains reusable UI widgets (e.g.,BottomBar,Calendar,RecipeCard).manager/: Contains the logic classes (ChangeNotifiers) for state management.models/: Defines the data structures (e.g.,GroceryList,Recipe).screens/: Contains the main views of the application (HomeScreen,MealPlannerScreen, etc.).app_theme.dart: Defines the global visual style and theme of the application.
To run this project locally:
- Prerequisites: Ensure you have the Flutter SDK installed and an emulator or physical device connected.
- Install Dependencies:
flutter pub get
- Run the App:
flutter run
Key packages used in this project include:
provider: For state management.intl: For date formatting and localization (Italian locale support).material_design_icons_flutter: For extended icon support.
- Gaia Simeoni
- Maria Elena Zuliani