Giter VIP home page Giter VIP logo

frisp's Introduction

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

frisp's People

Contributors

muhammadsabah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

frisp's Issues

cloning

can i edit this project and make it my own and publish it on google play
but why cant i see the android file on project menu dropdown is this restricted
i like your code its clean and i can understand some of its code im new to coding
are you related to flutter apprentice book

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.