Frisp
Frisp copied to clipboard
Social Networking Recipe App Using Provider

Frisp
Table of Contents
- Prerequisites
- Features
- Roadmap
- Screenshots
- Directory Structure
- Dependencies
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:
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 :
- [x] Use Firebase for user Auth.
- [ ] Implement deep linking for desktop and mobile.
- [x] Use FontAwesome icons instead of material icons.
- [x] Finish the UI design for the signup and login screens.
- [x] Create data models for the JSON data.
- [x] Code the search recipe tab.
- [x] Code the bookmark tab.
- [x] Use Streams instead of Provider to save each recipe.
- [x] Save complex data using Hive.
- [x] Save simple data using SharedPreferences.
- [ ] Switch the API service to either Dio or Chopper.
- [x] Add searching functionality.
- [x] Use Firebase to implement posting functionality.
- [x] Design and Code Splash and Onboarding screen.
- [x] Implement Chatting or Commenting functionality.
- [x] Complete the Discovery Screen.
- [x] Code the Profile Screen.
- [x] Design and Code the recipe details screeen.
- [ ] Make the app responsive for other mobile devices.
- [x] Reply to comments feature.
- [x] Add dark theme and light theme.
- [ ] Use Navigation 2.0
- [x] Code the shopping screen.
- [x] Code the shopping item and shopping list screens.
- [x] Add Shimmer loading.
- [x] Design and code Settings Screen.
- [x] Design and code Edit Profile Screen.
- [x] 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 |