Skip to content

MuhammadSabah/Frisp

Repository files navigation

food_app_icon
Frisp

Table of Contents

WeCode Bootcamp final project.

A small social networking application for food recipes.

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.

Languages and Tools:

dart flutter firebase VS code

A new Flutter project.

Getting Started

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.

Prerequisites

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

🚀 Features :

• 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.

✅ Roadmap :

  • 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.

Screenshots

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

Directory Structure

📂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

Dependencies

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

Created & Maintained By

MuhammadSabah