For this project my goal is to learn about organizing code, folder structure, using backend, Firebase services, having a good UI/UX Design, data persistent, deep linking, responsiveness and implementing functionalities for a complex app.
A new Flutter project.
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
Clone repository git clone https://github.com/MuhammadSabah/Food-Recipe-FinalProject.git
and open pubspec.yaml
run flutter pub get
run app on an emulator flutter run
• Exploring different types of recipes and categories.
• Searching for specific recipes.
• Bookmarking your favorite recipes.
• Ability to Post, and Comment on what other people have shared.
• A list for saving ingredients while going to grocery store.
• Like and reply to comments.
• Search for specific users and view their profile.
• Send messages to other users and add them to your chat list.
- Use Firebase for user Auth.
- Implement deep linking for desktop and mobile.
- Use FontAwesome icons instead of material icons.
- Finish the UI design for the signup and login screens.
- Create data models for the JSON data.
- Code the search recipe tab.
- Code the bookmark tab.
- Use Streams instead of Provider to save each recipe.
- Save complex data using Hive.
- Save simple data using SharedPreferences.
- Switch the API service to either Dio or Chopper.
- Add searching functionality.
- Use Firebase to implement posting functionality.
- Design and Code Splash and Onboarding screen.
- Implement Chatting or Commenting functionality.
- Complete the Discovery Screen.
- Code the Profile Screen.
- Design and Code the recipe details screeen.
- Make the app responsive for other mobile devices.
- Reply to comments feature.
- Add dark theme and light theme.
- Use Navigation 2.0
- Code the shopping screen.
- Code the shopping item and shopping list screens.
- Add Shimmer loading.
- Design and code Settings Screen.
- Design and code Edit Profile Screen.
- Search for specific user functionality.
Onboarding 1 | Onboarding 2 | Onboarding 3 | Welcome Screen |
---|---|---|---|
Signup Screen | Login Screen | Forget Password Screen | Feed Screen-Activity |
---|---|---|---|
Feed Screen-Discover-1 | Feed Screen-Discover-2 | Search User Screen | Search Recipe Screen |
---|---|---|---|
Recipe Detail Screen | Bookmark Tab | Shopping List Screen | Shopping Item Screen |
---|---|---|---|
Add Recipe Screen | Create Recipe Screen-1 | Create Recipe Screen-2 | Profile Screen-1 |
---|---|---|---|
Profile Screen-2 | Edit Profile Screen | Settings Screen | Recipe Post Screen |
---|---|---|---|
Comments Screen | Chats Screen | Chat Messages Screen | Following Screen |
---|---|---|---|
📂lib
├── main.dart
├── 📂core
│ ├── app_pages.dart
│ ├── app_theme.dart
│ └── constants.dart
├── 📂localization
│ ├── app_en.arb
│ ├── localization.dart
└── 📂src
├── 📂features
│ ├── 📂authentication
│ │ ├── 📂screens
│ │ │ ├── error_screen.dart
│ │ │ ├── forget_password_screen.dart
│ │ │ ├── log_in_screen.dart
│ │ │ └── sign_up_screen.dart
│ │ └── 📂widgets
│ │ ├── auth_bottom_rich_text.dart
│ │ ├── auth_confirm_button.dart
│ │ ├── log_in_form.dart
│ │ └── sign_up_form.dart
│ ├── 📂bookmark_recipe
│ │ ├── 📂repository
│ │ │ └── bookmark_interface.dart
│ │ ├── 📂screens
│ │ │ ├── bookmark_tab.dart
│ │ │ └── recipe_detail_screen.dart
│ │ └── 📂widgets
│ │ ├── bookmark_card.dart
│ │ └── bottom_save_button.dart
│ ├── 📂chat
│ │ ├── 📂screens
│ │ │ ├── chat_messages_screen.dart
│ │ │ └── contacts_list_screen.dart
│ │ └── 📂widgets
│ │ ├── chat_messages.dart
│ │ ├── my_message_bubble.dart
│ │ └── sender_message_bubble.dart
│ ├── 📂comment
│ │ ├── 📂screens
│ │ │ └── comments_screen.dart
│ │ └── 📂widgets
│ │ ├── comment_card.dart
│ │ └── reply_card.dart
│ ├── 📂create_recipe_post
│ │ ├── 📂screens
│ │ │ ├── add_recipe_post_screen.dart
│ │ │ └── create_recipe_post_screen.dart
│ │ └── 📂widgets
│ │ └── add_fields_section.dart
│ ├── 📂home
│ │ └── 📂screens
│ │ └── home_screen.dart
│ ├── 📂onboarding
│ │ ├── 📂screens
│ │ │ └── onboarding_screen.dart
│ │ └── 📂pages
│ │ ├── page_1.dart
│ │ ├── page_2.dart
│ │ └── page_3.dart
│ ├── 📂profile
│ │ ├── 📂screens
│ │ │ ├── edit_profile_screen.dart
│ │ │ ├── followers_screen.dart
│ │ │ ├── following_screen.dart
│ │ │ └── profile_screen.dart
│ │ └── 📂widgets
│ │ ├── profile_back_button.dart
│ │ ├── profile_cached_background_photo.dart
│ │ ├── profile_default_background_photo.dart
│ │ ├── profile_info_container.dart
│ │ ├── profile_messages_button.dart
│ │ ├── profile_post_section.dart
│ │ ├── profile_send_message_button.dart
│ │ └── profile_settings_button.dart
│ ├── 📂recipe_feed
│ │ ├── 📂screens
│ │ │ ├── activity_tab.dart
│ │ │ ├── discover_tab.dart
│ │ │ └── feed_screen.dart
│ │ └── 📂widgets
│ │ ├── animated_like_button.dart
│ │ ├── category_list_view.dart
│ │ ├── featured_recipes_list_view.dart
│ │ ├── ingredients_post_section.dart
│ │ ├── popular_recipes_list_view.dart
│ │ ├── post_detail_sliver_app_bar.dart
│ │ ├── post_details_title_section.dart
│ │ ├── recipe_post_card.dart
│ │ ├── recipe_post_detail_screen.dart
│ │ ├── serve_and_cook_time_section.dart
│ │ ├── steps_post_section.dart
│ │ ├── title_and_description_form_section.dart
│ │ └── today_recipes_list_view.dart
│ ├── 📂search_recipe
│ │ ├── 📂screens
│ │ │ ├── search_recipe_screen.dart
│ │ │ └── search_tab.dart
│ │ └── 📂widgets
│ │ ├── circle_tab_indicator.dart
│ │ ├── custom_drop_down.dart
│ │ ├── details_sliver_app_bar.dart
│ │ ├── details_title_section.dart
│ │ ├── ingredients_section.dart
│ │ ├── instructions_section.dart
│ │ ├── nutritions_section.dart
│ │ ├── recipe_card.dart
│ │ ├── recipe_grid_view.dart
│ │ └── servings_and_ready_in_section.dart
│ ├── 📂search_user
│ │ ├── 📂screens
│ │ │ └── search_user_screen.dart
│ │ └── 📂widgets
│ │ └── user_search_result_list.dart
│ ├── 📂settings
│ │ ├── 📂screens
│ │ │ └── settings_screen.dart
│ │ └── 📂widgets
│ │ ├── settings_account_detail_button.dart
│ │ ├── settings_back_button.dart
│ │ ├── settings_change_password_button.dart
│ │ ├── settings_log_out_button.dart
│ │ └── settings_theme_button.dart
│ ├── 📂splash
│ │ └── 📂screens
│ │ └── splash_screen.dart
│ └── 📂welcome
│ └── 📂screens
│ └── welcome_screen.dart
├── 📂models
│ ├── 📂api
│ │ ├── recipe_api_model.dart
│ │ └── recipe_api_model.g.dart
│ ├── 📂data_class_models
│ │ ├── ingredient_model.dart
│ │ ├── instruction_model.dart
│ │ ├── nutrients_model.dart
│ │ ├── nutrition_model.dart
│ │ ├── recipe_model.dart
│ │ └── steps_model.dart
│ ├── 📂enums
│ │ ├── importance_enum.dart
│ │ └── message_enum.dart
│ ├── comment_model.dart
│ ├── message.dart
│ ├── recipe_post_model.dart
│ ├── reply_model.dart
│ ├── shopping_item.dart
│ ├── shopping_item.g.dart
│ └── user_model.dart
├── 📂navigation
│ └── route_generator.dart
├── 📂providers
│ ├── auth_provider.dart
│ ├── bookmark_provider.dart
│ ├── message_provider.dart
│ ├── recipe_post_provider.dart
│ ├── settings_provider.dart
│ ├── shopping_provider.dart
│ ├── user_image_provider.dart
│ └── user_provider.dart
└── 📂services
└── recipe_service.dart
Name | Version |
---|---|
google_fonts | 2.1.0 |
provider | 6.0.0 |
flutter_colorpicker | 0.6.0 |
intl | 0.17.0 |
uuid | 3.0.4 |
smooth_page_indicator | 1.0.0+2 |
url_launcher | 6.0.10 |
shared_preferences | 2.0.7 |
flutter_svg | 1.1.0 |
json_annotation | 4.6.0 |
http | 0.13.4 |
flutter_slidable | 0.6.0 |
shimmer | 2.0.0 |
font_awesome_flutter | 10.1.0 |
build_runner | 2.1.1 |
json_serializable | 6.3.1 |
firebase_core | 1.20.0 |
cloud_firestore | 3.4.2 |
firebase_auth | 3.6.1 |
image_picker | 0.8.5+3 |
dartz | 0.10.1 |
get | 4.6.5 |
bubble | 1.2.1 |
hive | 2.2.3 |
hive_flutter | 1.1.0 |
hive_generator | 1.1.3 |
equatable | 2.0.5 |
websafe_svg | 2.1.2+2 |
flutter_native_splash | 2.2.8 |
dropdown_button2 | 1.7.2 |
flutter_localizations |