diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 3188734fd455cdf3c4bd457c5c56b743cb3e88c0..bd7c7ac794e243617ba915d343ecdf653d42ec53 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.food_app">
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
         android:label="food_app"
         android:name="${applicationName}"
diff --git a/lib/auth/sign_in.dart b/lib/auth/sign_in.dart
index 0c5e64d8f80f1893fc1bbfc288f3103b583b2991..47de5bd8649b5092654cdfa7c50f8e76e4360714 100644
--- a/lib/auth/sign_in.dart
+++ b/lib/auth/sign_in.dart
@@ -2,7 +2,9 @@ import 'package:firebase_auth/firebase_auth.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_signin_button/flutter_signin_button.dart';
 import 'package:flutter_signin_button/button_view.dart';
+import 'package:food_app/providers/user_provider.dart';
 import 'package:google_sign_in/google_sign_in.dart';
+import 'package:provider/provider.dart';
 
 import '../screens/home_screens/home_screen.dart';
 
@@ -12,12 +14,12 @@ class SignIn extends StatefulWidget {
 }
 
 class _SignInState extends State<SignIn> {
+  UserProvider userProvider;
   Future<void> _googleSignUp() async {
     try {
       final GoogleSignIn _googleSignIn = GoogleSignIn(
         scopes: [
           'email',
-          'https://www.googleapis.com/auth/contacts.readonly',
         ],
       );
       final FirebaseAuth _auth = FirebaseAuth.instance;
@@ -32,7 +34,13 @@ class _SignInState extends State<SignIn> {
       );
 
       final User user = (await _auth.signInWithCredential(credential)).user;
-      print("signed in " + user.displayName);
+      // print("signed in " + user.displayName);
+      userProvider.addUserData(
+        currentUser: user,
+        userEmail: user.email,
+        userImage: user.photoURL,
+        userName: user.displayName,
+      );
 
       return user;
     } catch (e) {
@@ -42,6 +50,7 @@ class _SignInState extends State<SignIn> {
 
   @override
   Widget build(BuildContext context) {
+    userProvider = Provider.of<UserProvider>(context);
     return Scaffold(
       body: Container(
         height: double.infinity,
diff --git a/lib/main.dart b/lib/main.dart
index 7632266c7e6b8c6993cd3ed83d5e393f65f3cba2..f41db38da74d895cb57189cbbdc4066a1cca8c35 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -4,6 +4,7 @@ import 'package:food_app/auth/sign_in.dart';
 import 'package:firebase_core/firebase_core.dart';
 import 'package:food_app/config/colors.dart';
 import 'package:food_app/providers/product_provider.dart';
+import 'package:food_app/providers/user_provider.dart';
 import 'package:food_app/screens/home_screens/home_screen.dart';
 import 'package:provider/provider.dart';
 
@@ -17,8 +18,15 @@ class MyApp extends StatelessWidget {
   // This widget is the root of your application.
   @override
   Widget build(BuildContext context) {
-    return ChangeNotifierProvider<ProductProvider>(
-      create: (context) => ProductProvider(),
+    return MultiProvider(
+      providers: [
+        ChangeNotifierProvider<ProductProvider>(
+          create: (context) => ProductProvider(),
+        ),
+        ChangeNotifierProvider<UserProvider>(
+        create: (context) => UserProvider(),
+        )
+      ],
       child: MaterialApp(
         theme: ThemeData(
             primaryColor: primaryColor,
diff --git a/lib/providers/product_provider.dart b/lib/providers/product_provider.dart
index 6af7397856080e7a92bcbd0c61a863133b6f264c..e325b9707343d9d7ce0df63a779a601cf02c324c 100644
--- a/lib/providers/product_provider.dart
+++ b/lib/providers/product_provider.dart
@@ -1,22 +1,31 @@
 import 'package:cloud_firestore/cloud_firestore.dart';
 import 'package:flutter/foundation.dart';
+import 'package:flutter/cupertino.dart';
 import 'package:food_app/models/product_model.dart';
 
 class ProductProvider with ChangeNotifier {
-  List<ProductModel> herbsProductList = [];
   ProductModel productModel;
 
+  List<ProductModel> search = [];
+  productModels(QueryDocumentSnapshot element) {
+    productModel = ProductModel(
+      productImage: element.get("productImage"),
+      productName: element.get("productName"),
+      productPrice: element.get("productPrice"),
+    );
+    search.add(productModel);
+  }
+
+// Display Herbs Drawer
+  List<ProductModel> herbsProductList = [];
+
   fetchHerbsProductData() async {
     List<ProductModel> newList = [];
     QuerySnapshot value =
         await FirebaseFirestore.instance.collection("HerbsProduct ").get();
     value.docs.forEach(
       (element) {
-        productModel = ProductModel(
-          productImage: element.get("productImage"),
-          productName: element.get("productName"),
-          productPrice: element.get("productPrice"),
-        );
+        productModels(element);
         newList.add(productModel);
       },
     );
@@ -28,6 +37,7 @@ class ProductProvider with ChangeNotifier {
     return herbsProductList;
   }
 
+// Display Fresh Drawer
   List<ProductModel> freshProductList = [];
 
   fetchFreshProductData() async {
@@ -38,11 +48,7 @@ class ProductProvider with ChangeNotifier {
 
     value.docs.forEach(
       (element) {
-        productModel = ProductModel(
-          productImage: element.get("productImage"),
-          productName: element.get("productName"),
-          productPrice: element.get("productPrice"),
-        );
+        productModels(element);
         newList.add(productModel);
       },
     );
@@ -54,6 +60,7 @@ class ProductProvider with ChangeNotifier {
     return freshProductList;
   }
 
+// Display Root Drawer
   List<ProductModel> rootProductList = [];
 
   fetchRootProductData() async {
@@ -65,11 +72,7 @@ class ProductProvider with ChangeNotifier {
 
     value.docs.forEach(
       (element) {
-        productModel = ProductModel(
-          productImage: element.get("productImage"),
-          productName: element.get("productName"),
-          productPrice: element.get("productPrice"),
-        );
+        productModels(element);
         newList.add(productModel);
       },
     );
@@ -80,4 +83,11 @@ class ProductProvider with ChangeNotifier {
   List<ProductModel> get getRootProductDataList {
     return rootProductList;
   }
+
+
+
+  // Search Return
+  List<ProductModel> get getAllProductSearch {
+    return search;
+  }
 }
diff --git a/lib/providers/user_provider.dart b/lib/providers/user_provider.dart
new file mode 100644
index 0000000000000000000000000000000000000000..91a05841b3af4005248bfd823ffd72b8137aa008
--- /dev/null
+++ b/lib/providers/user_provider.dart
@@ -0,0 +1,16 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:flutter/cupertino.dart';
+
+class UserProvider with ChangeNotifier {
+  void addUserData({User currentUser, String userName,String userEmail,String userImage,}) async {
+    await FirebaseFirestore.instance.collection("usersData").doc(currentUser.uid).set(
+      {
+        "userName":userName,
+        "userEmail":userEmail,
+        "userImage":userImage,
+        "userUId":currentUser.uid,
+      },
+    );
+  }
+}
diff --git a/lib/screens/home_screens/home_screen.dart b/lib/screens/home_screens/home_screen.dart
index 799ab1db7eee0e4bb38f2c03b6001cb199cad3a6..bb39cb809c2339e9117b37ed4bc77e4814dca51e 100644
--- a/lib/screens/home_screens/home_screen.dart
+++ b/lib/screens/home_screens/home_screen.dart
@@ -27,9 +27,20 @@ class _HomeScreenState extends State<HomeScreen> {
             mainAxisAlignment: MainAxisAlignment.spaceBetween,
             children: [
               Text('Herbs Seasonings'),
-              Text(
-                'view all',
-                style: TextStyle(color: Colors.grey),
+              GestureDetector(
+                onTap: (){
+                  Navigator.of(context).push(
+                    MaterialPageRoute(
+                      builder: (context) => Search(
+                        search: productProvider.getHerbsProductDataList,
+                      ),
+                      ),
+                    );
+                },
+                child: Text(
+                  'view all',
+                  style: TextStyle(color: Colors.grey),
+                ),
               ),
             ],
           ),
@@ -76,9 +87,20 @@ class _HomeScreenState extends State<HomeScreen> {
             mainAxisAlignment: MainAxisAlignment.spaceBetween,
             children: [
               Text('Fresh Fruits'),
-              Text(
-                'view all',
-                style: TextStyle(color: Colors.grey),
+              GestureDetector(
+                onTap: (){
+                  Navigator.of(context).push(
+                    MaterialPageRoute(
+                      builder: (context) => Search(
+                        search: productProvider.getFreshProductDataList,
+                      ),
+                      ),
+                    );
+                },
+                child: Text(
+                  'view all',
+                  style: TextStyle(color: Colors.grey),
+                ),
               ),
             ],
           ),
@@ -122,9 +144,20 @@ class _HomeScreenState extends State<HomeScreen> {
             mainAxisAlignment: MainAxisAlignment.spaceBetween,
             children: [
               Text('Root Vegetable'),
-              Text(
-                'view all',
-                style: TextStyle(color: Colors.grey),
+              GestureDetector(
+                onTap: (){
+                  Navigator.of(context).push(
+                    MaterialPageRoute(
+                      builder: (context) => Search(
+                        search: productProvider.getRootProductDataList,
+                      ),
+                      ),
+                    );
+                },
+                child: Text(
+                  'view all',
+                  style: TextStyle(color: Colors.grey),
+                ),
               ),
             ],
           ),
@@ -187,7 +220,9 @@ class _HomeScreenState extends State<HomeScreen> {
               onPressed: () {
                 Navigator.of(context).push(
                   MaterialPageRoute(
-                    builder: (context) => Search(),
+                    builder: (context) => Search(
+                      search: productProvider.getAllProductSearch,
+                    ),
                   ),
                 );
               },
diff --git a/lib/screens/home_screens/single_product.dart b/lib/screens/home_screens/single_product.dart
index cd7604a2ceddf002d45029de67caf9c592d98465..d323660a625b131c095e68ffcfbd17997f8f0654 100644
--- a/lib/screens/home_screens/single_product.dart
+++ b/lib/screens/home_screens/single_product.dart
@@ -50,7 +50,7 @@ class SingleProduct extends StatelessWidget {
                                     fontWeight: FontWeight.bold,
                                   ),
                                 ),
-                                Text('$productPrice\$/50 Gram',
+                                Text('\$$productPrice/50 Gram',
                                     style: TextStyle(
                                       color: Colors.grey,
                                     )),
@@ -66,11 +66,51 @@ class SingleProduct extends StatelessWidget {
                                         decoration: BoxDecoration(
                                           border:
                                               Border.all(color: Colors.grey),
+                                          borderRadius: BorderRadius.circular(8),
                                         ),
+                                        child: Row(children: [
+                                          Expanded(child: Text(
+                                            '50 Gram',
+                                            style: TextStyle(fontSize: 11),
+                                          )),
+                                          Center(
+                                            child: Icon(
+                                              Icons.arrow_drop_down,
+                                              size: 20, color: Colors.yellow,
+                                            ),
+                                          )
+                                        ],),
                                       ),
-                                    )
+                                    ),
+                                    SizedBox(
+                                      width: 5,
+                                    ),
+                                    Container(
+                                      height: 25,
+                                      width: 50,
+                                      decoration: BoxDecoration(
+                                        border: Border.all(color: Colors.grey),
+                                        borderRadius: BorderRadius.circular(8),
+                                      ),
+                                      child: Row(
+                                        mainAxisAlignment: MainAxisAlignment.center,
+                                        children: [
+                                          Icon(Icons.remove,
+                                          size: 15, color: Color(0xffd0b84c)),
+                                          Text(
+                                            '1',
+                                            style: TextStyle(
+                                              color: Color(0xffd0b84c),
+                                              fontWeight: FontWeight.bold,
+                                            ),
+                                          ),
+                                          Icon(Icons.add,
+                                            size: 15, color: Color(0xffd0b84c)
+                                          ),
+                                        ],),
+                                    ),
                                   ],
-                                )
+                                ),
                               ],
                             )))
                   ],
diff --git a/lib/screens/search/search.dart b/lib/screens/search/search.dart
index 05760a96e988b19f5bbccd5a936f5e8602e4b74c..d99983a78432d7e2fabe0e570e66e46701af6761 100644
--- a/lib/screens/search/search.dart
+++ b/lib/screens/search/search.dart
@@ -1,9 +1,96 @@
 import 'package:flutter/material.dart';
+import 'package:food_app/config/colors.dart';
+import 'package:food_app/models/product_model.dart';
 import 'package:food_app/widgets/single_item.dart';
 
-class Search extends StatelessWidget {
+enum SigninCharacter { lowToHigh, highToLow, alphabetically }
+
+class Search extends StatefulWidget {
+  final List<ProductModel> search;
+  Search({this.search});
+  @override
+  _SearchState createState() => _SearchState();
+}
+
+class _SearchState extends State<Search> {
+  String query = "";
+
+  SigninCharacter _character = SigninCharacter.alphabetically;
+
+  searchItem(String query) {
+    List<ProductModel> searhFood = widget.search.where((element) {
+      return element.productName.toLowerCase().contains(query);
+    }).toList();
+    return searhFood;
+  }
+
   @override
   Widget build(BuildContext context) {
+    List<ProductModel> _searchItem = searchItem(query);
+    void bottomShet() => showModalBottomSheet(
+        context: context,
+        shape: RoundedRectangleBorder(
+          borderRadius: BorderRadius.only(
+            topLeft: Radius.circular(20),
+            topRight: Radius.circular(20),
+          ),
+        ),
+        builder: (context) {
+          return Column(
+            mainAxisSize: MainAxisSize.min,
+            children: <Widget>[
+              ListTile(
+                title: new Text(
+                  'Sort By',
+                  style: TextStyle(fontWeight: FontWeight.bold),
+                ),
+              ),
+              RadioListTile(
+                  value: SigninCharacter.lowToHigh,
+                  groupValue: _character,
+                  title: Text("Price - Low to High"),
+                  onChanged: (vav) {
+                    setState(() {
+                      _character = vav;
+                    });
+                    Navigator.of(context).pop();
+                  }),
+              RadioListTile(
+                  value: SigninCharacter.highToLow,
+                  groupValue: _character,
+                  title: Text("Price - High to Low"),
+                  onChanged: (vav) {
+                    setState(() {
+                      _character = vav;
+                    });
+                    Navigator.of(context).pop();
+                  }),
+              RadioListTile(
+                value: SigninCharacter.alphabetically,
+                groupValue: _character,
+                title: Text("Price - Alphabetically"),
+                onChanged: (vav) {
+                  setState(() {
+                    _character = vav;
+                  });
+                  Navigator.of(context).pop();
+                },
+              ),
+              Container(
+                height: 46,
+                margin: EdgeInsets.symmetric(vertical: 20, horizontal: 20),
+                width: double.infinity,
+                child: MaterialButton(
+                  child: Text("Submit"),
+                  shape: RoundedRectangleBorder(
+                      borderRadius: BorderRadius.circular(30)),
+                  color: primaryColor,
+                  onPressed: () {},
+                ),
+              )
+            ],
+          );
+        });
     return Scaffold(
       appBar: AppBar(
         title: Text("Search"),
@@ -23,6 +110,11 @@ class Search extends StatelessWidget {
             height: 52,
             margin: EdgeInsets.symmetric(horizontal: 20),
             child: TextField(
+              onChanged: (value) {
+                setState(() {
+                  query = value;
+                });
+              },
               decoration: InputDecoration(
                 border: OutlineInputBorder(
                   borderRadius: BorderRadius.circular(30),
@@ -38,18 +130,16 @@ class Search extends StatelessWidget {
           SizedBox(
             height: 10,
           ),
-          SingleItem(
-            isBool: false,
-          ),
-          SingleItem(
-            isBool: false,
-          ),
-          SingleItem(
-            isBool: false,
-          ),
-          SingleItem(
-            isBool: false,
-          ),
+          Column(
+            children: _searchItem.map((data) {
+              return SingleItem(
+                isBool: false,
+                productImage: data.productImage,
+                productName: data.productName,
+                productPrice: data.productPrice,
+              );
+            }).toList(),
+          )
         ],
       ),
     );
diff --git a/lib/widgets/single_item.dart b/lib/widgets/single_item.dart
index b2dd45401717db32dd93dc10c55aab8f5a5d2b5e..4cd232ead1a39d56cff0ca6069befb23738dcd3e 100644
--- a/lib/widgets/single_item.dart
+++ b/lib/widgets/single_item.dart
@@ -4,7 +4,10 @@ import 'package:food_app/screens/search/search.dart';
 
 class SingleItem extends StatelessWidget {
   bool isBool = false;
-  SingleItem({this.isBool});
+  String productImage;
+  String productName;
+  int productPrice;
+  SingleItem({this.isBool,this.productImage,this.productName,this.productPrice});
   @override
   Widget build(BuildContext context) {
     return Column(
@@ -18,7 +21,7 @@ class SingleItem extends StatelessWidget {
                   height: 100,
                   child: Center(
                     child: Image.network(
-                        "https://purepng.com/public/uploads/large/purepng.com-pepermintpeperminthybrid-mintperennial-plantmint-14115270742872fda0.png"),
+                        productImage),
                   ),
                 ),
               ),
@@ -34,12 +37,12 @@ class SingleItem extends StatelessWidget {
                       Column(
                         children: [
                           Text(
-                            "productName",
+                            productName,
                             style: TextStyle(
                                 color: textColor, fontWeight: FontWeight.bold),
                           ),
                           Text(
-                            "50\$",
+                            "$productPrice\$",
                             style: TextStyle(
                               color: textColor,
                               fontWeight: FontWeight.bold,