├── .gitignore ├── App.js ├── README.md ├── __tests__ └── App-test.js ├── android ├── app │ ├── BUCK │ ├── build.gradle │ ├── build_defs.bzl │ ├── debug.keystore │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── fooddeliveryapp │ │ │ └── ReactNativeFlipper.java │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── fonts │ │ │ ├── Roboto-Black.ttf │ │ │ ├── Roboto-BlackItalic.ttf │ │ │ ├── Roboto-Bold.ttf │ │ │ ├── Roboto-BoldItalic.ttf │ │ │ ├── Roboto-Italic.ttf │ │ │ ├── Roboto-Light.ttf │ │ │ ├── Roboto-LightItalic.ttf │ │ │ ├── Roboto-Medium.ttf │ │ │ ├── Roboto-MediumItalic.ttf │ │ │ ├── Roboto-Regular.ttf │ │ │ ├── Roboto-Thin.ttf │ │ │ ├── Roboto-ThinItalic.ttf │ │ │ ├── RobotoCondensed-Bold.ttf │ │ │ ├── RobotoCondensed-BoldItalic.ttf │ │ │ ├── RobotoCondensed-Italic.ttf │ │ │ ├── RobotoCondensed-Light.ttf │ │ │ ├── RobotoCondensed-LightItalic.ttf │ │ │ └── RobotoCondensed-Regular.ttf │ │ ├── java │ │ └── com │ │ │ └── fooddeliveryapp │ │ │ ├── MainActivity.java │ │ │ └── MainApplication.java │ │ └── res │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── assets ├── fonts │ ├── Roboto-Black.ttf │ ├── Roboto-BlackItalic.ttf │ ├── Roboto-Bold.ttf │ ├── Roboto-BoldItalic.ttf │ ├── Roboto-Italic.ttf │ ├── Roboto-Light.ttf │ ├── Roboto-LightItalic.ttf │ ├── Roboto-Medium.ttf │ ├── Roboto-MediumItalic.ttf │ ├── Roboto-Regular.ttf │ ├── Roboto-Thin.ttf │ ├── Roboto-ThinItalic.ttf │ ├── RobotoCondensed-Bold.ttf │ ├── RobotoCondensed-BoldItalic.ttf │ ├── RobotoCondensed-Italic.ttf │ ├── RobotoCondensed-Light.ttf │ ├── RobotoCondensed-LightItalic.ttf │ └── RobotoCondensed-Regular.ttf ├── icons │ ├── back.png │ ├── car.png │ ├── cutlery.png │ ├── donut.png │ ├── drink.png │ ├── fire.png │ ├── fries.png │ ├── hamburger.png │ ├── hotdog.png │ ├── like.png │ ├── list.png │ ├── location.png │ ├── mastercard.png │ ├── nearby.png │ ├── noodle.png │ ├── pin.png │ ├── pizza.png │ ├── red-pin.png │ ├── rice-bowl.png │ ├── salad.png │ ├── search.png │ ├── shopping-basket.png │ ├── star.png │ ├── sushi.png │ └── user.png └── images │ ├── avatar-1.jpg │ ├── avatar-2.jpg │ ├── avatar-3.jpg │ ├── avatar-4.jpg │ ├── avatar-5.jpg │ ├── baked-fries.jpg │ ├── burger-restaurant-2.jpg │ ├── burger-restaurant.jpg │ ├── chicago-hot-dog.jpg │ ├── crispy-chicken-burger.jpg │ ├── fries-restaurant.jpg │ ├── hawaiian-pizza.jpg │ ├── honey-mustard-chicken-burger.jpg │ ├── hot-dog-restaurant.jpg │ ├── ice-kacang.jpg │ ├── japanese-restaurant.jpg │ ├── kek-lapis-shop.jpg │ ├── kek-lapis.jpg │ ├── kolo-mee.jpg │ ├── nasi-briyani-mutton.jpg │ ├── nasi-lemak.jpg │ ├── noodle-shop.jpg │ ├── pizza-restaurant.jpg │ ├── pizza.jpg │ ├── salad.jpg │ ├── sarawak-laksa.jpg │ ├── sushi.jpg │ ├── teh-c-peng.jpg │ └── tomato-pasta.jpg ├── babel.config.js ├── constants ├── icons.js ├── images.js ├── index.js ├── maps.js └── theme.js ├── index.js ├── ios ├── FoodDeliveryApp-tvOS │ └── Info.plist ├── FoodDeliveryApp-tvOSTests │ └── Info.plist ├── FoodDeliveryApp.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── FoodDeliveryApp-tvOS.xcscheme │ │ └── FoodDeliveryApp.xcscheme ├── FoodDeliveryApp.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FoodDeliveryApp │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ ├── LaunchScreen.storyboard │ └── main.m ├── FoodDeliveryAppTests │ ├── FoodDeliveryAppTests.m │ └── Info.plist ├── Podfile └── Podfile.lock ├── metro.config.js ├── navigation └── tabs.js ├── package-lock.json ├── package.json ├── react-native.config.js └── screens ├── Home.js ├── OrderDelivery.js ├── Restaurant.js └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | build/ 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | 32 | # node.js 33 | # 34 | node_modules/ 35 | npm-debug.log 36 | yarn-error.log 37 | 38 | # BUCK 39 | buck-out/ 40 | \.buckd/ 41 | *.keystore 42 | !debug.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | -------------------------------------------------------------------------------- /App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { createStackNavigator } from "@react-navigation/stack"; 4 | import { NavigationContainer } from '@react-navigation/native' 5 | 6 | import { Restaurant, OrderDelivery } from './screens' 7 | import Tabs from './navigation/tabs' 8 | 9 | const Stack = createStackNavigator(); 10 | 11 | const App = () => { 12 | return ( 13 | 14 | 20 | 21 | 22 | 23 | 24 | 25 | ) 26 | } 27 | 28 | export default App; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React-Native-Food-Ordering-App 2 | ![image](https://user-images.githubusercontent.com/62868878/125647183-5dec7b86-a044-4b53-95bb-5e3f9e6ea8fc.png) 3 | 4 | -------------------------------------------------------------------------------- /__tests__/App-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: test renderer must be required after react-native. 10 | import renderer from 'react-test-renderer'; 11 | 12 | it('renders correctly', () => { 13 | renderer.create(); 14 | }); 15 | -------------------------------------------------------------------------------- /android/app/BUCK: -------------------------------------------------------------------------------- 1 | # To learn about Buck see [Docs](https://buckbuild.com/). 2 | # To run your application with Buck: 3 | # - install Buck 4 | # - `npm start` - to start the packager 5 | # - `cd android` 6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` 7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck 8 | # - `buck install -r android/app` - compile, install and run application 9 | # 10 | 11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") 12 | 13 | lib_deps = [] 14 | 15 | create_aar_targets(glob(["libs/*.aar"])) 16 | 17 | create_jar_targets(glob(["libs/*.jar"])) 18 | 19 | android_library( 20 | name = "all-libs", 21 | exported_deps = lib_deps, 22 | ) 23 | 24 | android_library( 25 | name = "app-code", 26 | srcs = glob([ 27 | "src/main/java/**/*.java", 28 | ]), 29 | deps = [ 30 | ":all-libs", 31 | ":build_config", 32 | ":res", 33 | ], 34 | ) 35 | 36 | android_build_config( 37 | name = "build_config", 38 | package = "com.fooddeliveryapp", 39 | ) 40 | 41 | android_resource( 42 | name = "res", 43 | package = "com.fooddeliveryapp", 44 | res = "src/main/res", 45 | ) 46 | 47 | android_binary( 48 | name = "app", 49 | keystore = "//android/keystores:debug", 50 | manifest = "src/main/AndroidManifest.xml", 51 | package_type = "debug", 52 | deps = [ 53 | ":app-code", 54 | ], 55 | ) 56 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | 3 | import com.android.build.OutputFile 4 | 5 | /** 6 | * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets 7 | * and bundleReleaseJsAndAssets). 8 | * These basically call `react-native bundle` with the correct arguments during the Android build 9 | * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the 10 | * bundle directly from the development server. Below you can see all the possible configurations 11 | * and their defaults. If you decide to add a configuration block, make sure to add it before the 12 | * `apply from: "../../node_modules/react-native/react.gradle"` line. 13 | * 14 | * project.ext.react = [ 15 | * // the name of the generated asset file containing your JS bundle 16 | * bundleAssetName: "index.android.bundle", 17 | * 18 | * // the entry file for bundle generation. If none specified and 19 | * // "index.android.js" exists, it will be used. Otherwise "index.js" is 20 | * // default. Can be overridden with ENTRY_FILE environment variable. 21 | * entryFile: "index.android.js", 22 | * 23 | * // https://reactnative.dev/docs/performance#enable-the-ram-format 24 | * bundleCommand: "ram-bundle", 25 | * 26 | * // whether to bundle JS and assets in debug mode 27 | * bundleInDebug: false, 28 | * 29 | * // whether to bundle JS and assets in release mode 30 | * bundleInRelease: true, 31 | * 32 | * // whether to bundle JS and assets in another build variant (if configured). 33 | * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 34 | * // The configuration property can be in the following formats 35 | * // 'bundleIn${productFlavor}${buildType}' 36 | * // 'bundleIn${buildType}' 37 | * // bundleInFreeDebug: true, 38 | * // bundleInPaidRelease: true, 39 | * // bundleInBeta: true, 40 | * 41 | * // whether to disable dev mode in custom build variants (by default only disabled in release) 42 | * // for example: to disable dev mode in the staging build type (if configured) 43 | * devDisabledInStaging: true, 44 | * // The configuration property can be in the following formats 45 | * // 'devDisabledIn${productFlavor}${buildType}' 46 | * // 'devDisabledIn${buildType}' 47 | * 48 | * // the root of your project, i.e. where "package.json" lives 49 | * root: "../../", 50 | * 51 | * // where to put the JS bundle asset in debug mode 52 | * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", 53 | * 54 | * // where to put the JS bundle asset in release mode 55 | * jsBundleDirRelease: "$buildDir/intermediates/assets/release", 56 | * 57 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 58 | * // require('./image.png')), in debug mode 59 | * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 60 | * 61 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 62 | * // require('./image.png')), in release mode 63 | * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", 64 | * 65 | * // by default the gradle tasks are skipped if none of the JS files or assets change; this means 66 | * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to 67 | * // date; if you have any other folders that you want to ignore for performance reasons (gradle 68 | * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ 69 | * // for example, you might want to remove it from here. 70 | * inputExcludes: ["android/**", "ios/**"], 71 | * 72 | * // override which node gets called and with what additional arguments 73 | * nodeExecutableAndArgs: ["node"], 74 | * 75 | * // supply additional arguments to the packager 76 | * extraPackagerArgs: [] 77 | * ] 78 | */ 79 | 80 | project.ext.react = [ 81 | enableHermes: false, // clean and rebuild if changing 82 | ] 83 | 84 | apply from: "../../node_modules/react-native/react.gradle" 85 | 86 | /** 87 | * Set this to true to create two separate APKs instead of one: 88 | * - An APK that only works on ARM devices 89 | * - An APK that only works on x86 devices 90 | * The advantage is the size of the APK is reduced by about 4MB. 91 | * Upload all the APKs to the Play Store and people will download 92 | * the correct one based on the CPU architecture of their device. 93 | */ 94 | def enableSeparateBuildPerCPUArchitecture = false 95 | 96 | /** 97 | * Run Proguard to shrink the Java bytecode in release builds. 98 | */ 99 | def enableProguardInReleaseBuilds = false 100 | 101 | /** 102 | * The preferred build flavor of JavaScriptCore. 103 | * 104 | * For example, to use the international variant, you can use: 105 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 106 | * 107 | * The international variant includes ICU i18n library and necessary data 108 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 109 | * give correct results when using with locales other than en-US. Note that 110 | * this variant is about 6MiB larger per architecture than default. 111 | */ 112 | def jscFlavor = 'org.webkit:android-jsc:+' 113 | 114 | /** 115 | * Whether to enable the Hermes VM. 116 | * 117 | * This should be set on project.ext.react and mirrored here. If it is not set 118 | * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode 119 | * and the benefits of using Hermes will therefore be sharply reduced. 120 | */ 121 | def enableHermes = project.ext.react.get("enableHermes", false); 122 | 123 | android { 124 | compileSdkVersion rootProject.ext.compileSdkVersion 125 | 126 | compileOptions { 127 | sourceCompatibility JavaVersion.VERSION_1_8 128 | targetCompatibility JavaVersion.VERSION_1_8 129 | } 130 | 131 | defaultConfig { 132 | applicationId "com.fooddeliveryapp" 133 | minSdkVersion rootProject.ext.minSdkVersion 134 | targetSdkVersion rootProject.ext.targetSdkVersion 135 | versionCode 1 136 | versionName "1.0" 137 | } 138 | splits { 139 | abi { 140 | reset() 141 | enable enableSeparateBuildPerCPUArchitecture 142 | universalApk false // If true, also generate a universal APK 143 | include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" 144 | } 145 | } 146 | signingConfigs { 147 | debug { 148 | storeFile file('debug.keystore') 149 | storePassword 'android' 150 | keyAlias 'androiddebugkey' 151 | keyPassword 'android' 152 | } 153 | } 154 | buildTypes { 155 | debug { 156 | signingConfig signingConfigs.debug 157 | } 158 | release { 159 | // Caution! In production, you need to generate your own keystore file. 160 | // see https://reactnative.dev/docs/signed-apk-android. 161 | signingConfig signingConfigs.debug 162 | minifyEnabled enableProguardInReleaseBuilds 163 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 164 | } 165 | } 166 | 167 | // applicationVariants are e.g. debug, release 168 | applicationVariants.all { variant -> 169 | variant.outputs.each { output -> 170 | // For each separate APK per architecture, set a unique version code as described here: 171 | // https://developer.android.com/studio/build/configure-apk-splits.html 172 | def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] 173 | def abi = output.getFilter(OutputFile.ABI) 174 | if (abi != null) { // null for the universal-debug, universal-release variants 175 | output.versionCodeOverride = 176 | versionCodes.get(abi) * 1048576 + defaultConfig.versionCode 177 | } 178 | 179 | } 180 | } 181 | } 182 | 183 | dependencies { 184 | implementation fileTree(dir: "libs", include: ["*.jar"]) 185 | //noinspection GradleDynamicVersion 186 | implementation "com.facebook.react:react-native:+" // From node_modules 187 | 188 | implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" 189 | 190 | // start add this 191 | implementation(project(':react-native-maps')){ 192 | exclude group: 'com.google.android.gms', module: 'play-services-base' 193 | exclude group: 'com.google.android.gms', module: 'play-services-maps' 194 | } 195 | implementation 'com.google.android.gms:play-services-base:17.5.0' 196 | implementation 'com.google.android.gms:play-services-maps:17.0.0' 197 | // end add this 198 | 199 | debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { 200 | exclude group:'com.facebook.fbjni' 201 | } 202 | 203 | debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { 204 | exclude group:'com.facebook.flipper' 205 | exclude group:'com.squareup.okhttp3', module:'okhttp' 206 | } 207 | 208 | debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { 209 | exclude group:'com.facebook.flipper' 210 | } 211 | 212 | if (enableHermes) { 213 | def hermesPath = "../../node_modules/hermes-engine/android/"; 214 | debugImplementation files(hermesPath + "hermes-debug.aar") 215 | releaseImplementation files(hermesPath + "hermes-release.aar") 216 | } else { 217 | implementation jscFlavor 218 | } 219 | } 220 | 221 | // Run this once to be able to run the application with BUCK 222 | // puts all compile dependencies into folder libs for BUCK to use 223 | task copyDownloadableDepsToLibs(type: Copy) { 224 | from configurations.compile 225 | into 'libs' 226 | } 227 | 228 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 229 | -------------------------------------------------------------------------------- /android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/debug.keystore -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/debug/java/com/fooddeliveryapp/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.fooddeliveryapp; 8 | 9 | import android.content.Context; 10 | import com.facebook.flipper.android.AndroidFlipperClient; 11 | import com.facebook.flipper.android.utils.FlipperUtils; 12 | import com.facebook.flipper.core.FlipperClient; 13 | import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; 14 | import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; 15 | import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; 16 | import com.facebook.flipper.plugins.inspector.DescriptorMapping; 17 | import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; 18 | import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; 19 | import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; 20 | import com.facebook.flipper.plugins.react.ReactFlipperPlugin; 21 | import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; 22 | import com.facebook.react.ReactInstanceManager; 23 | import com.facebook.react.bridge.ReactContext; 24 | import com.facebook.react.modules.network.NetworkingModule; 25 | import okhttp3.OkHttpClient; 26 | 27 | public class ReactNativeFlipper { 28 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 29 | if (FlipperUtils.shouldEnableFlipper(context)) { 30 | final FlipperClient client = AndroidFlipperClient.getInstance(context); 31 | 32 | client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); 33 | client.addPlugin(new ReactFlipperPlugin()); 34 | client.addPlugin(new DatabasesFlipperPlugin(context)); 35 | client.addPlugin(new SharedPreferencesFlipperPlugin(context)); 36 | client.addPlugin(CrashReporterPlugin.getInstance()); 37 | 38 | NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); 39 | NetworkingModule.setCustomClientBuilder( 40 | new NetworkingModule.CustomClientBuilder() { 41 | @Override 42 | public void apply(OkHttpClient.Builder builder) { 43 | builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); 44 | } 45 | }); 46 | client.addPlugin(networkFlipperPlugin); 47 | client.start(); 48 | 49 | // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized 50 | // Hence we run if after all native modules have been initialized 51 | ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); 52 | if (reactContext == null) { 53 | reactInstanceManager.addReactInstanceEventListener( 54 | new ReactInstanceManager.ReactInstanceEventListener() { 55 | @Override 56 | public void onReactContextInitialized(ReactContext reactContext) { 57 | reactInstanceManager.removeReactInstanceEventListener(this); 58 | reactContext.runOnNativeModulesQueueThread( 59 | new Runnable() { 60 | @Override 61 | public void run() { 62 | client.addPlugin(new FrescoFlipperPlugin()); 63 | } 64 | }); 65 | } 66 | }); 67 | } else { 68 | client.addPlugin(new FrescoFlipperPlugin()); 69 | } 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 13 | 16 | 17 | 18 | 19 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Black.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Italic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-Thin.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-Bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-BoldItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-Italic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-Light.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-LightItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/RobotoCondensed-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/assets/fonts/RobotoCondensed-Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/java/com/fooddeliveryapp/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.fooddeliveryapp; 2 | 3 | import com.facebook.react.ReactActivity; 4 | 5 | public class MainActivity extends ReactActivity { 6 | 7 | /** 8 | * Returns the name of the main component registered from JavaScript. This is used to schedule 9 | * rendering of the component. 10 | */ 11 | @Override 12 | protected String getMainComponentName() { 13 | return "FoodDeliveryApp"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/fooddeliveryapp/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.fooddeliveryapp; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | import com.facebook.react.PackageList; 6 | import com.facebook.react.ReactApplication; 7 | import com.facebook.react.ReactInstanceManager; 8 | import com.facebook.react.ReactNativeHost; 9 | import com.facebook.react.ReactPackage; 10 | import com.facebook.soloader.SoLoader; 11 | import java.lang.reflect.InvocationTargetException; 12 | import java.util.List; 13 | 14 | public class MainApplication extends Application implements ReactApplication { 15 | 16 | private final ReactNativeHost mReactNativeHost = 17 | new ReactNativeHost(this) { 18 | @Override 19 | public boolean getUseDeveloperSupport() { 20 | return BuildConfig.DEBUG; 21 | } 22 | 23 | @Override 24 | protected List getPackages() { 25 | @SuppressWarnings("UnnecessaryLocalVariable") 26 | List packages = new PackageList(this).getPackages(); 27 | // Packages that cannot be autolinked yet can be added manually here, for example: 28 | // packages.add(new MyReactNativePackage()); 29 | //packages.add(new MapsPackage()); 30 | return packages; 31 | } 32 | 33 | @Override 34 | protected String getJSMainModuleName() { 35 | return "index"; 36 | } 37 | }; 38 | 39 | @Override 40 | public ReactNativeHost getReactNativeHost() { 41 | return mReactNativeHost; 42 | } 43 | 44 | @Override 45 | public void onCreate() { 46 | super.onCreate(); 47 | SoLoader.init(this, /* native exopackage */ false); 48 | initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 49 | } 50 | 51 | /** 52 | * Loads Flipper in React Native templates. Call this in the onCreate method with something like 53 | * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 54 | * 55 | * @param context 56 | * @param reactInstanceManager 57 | */ 58 | private static void initializeFlipper( 59 | Context context, ReactInstanceManager reactInstanceManager) { 60 | if (BuildConfig.DEBUG) { 61 | try { 62 | /* 63 | We use reflection here to pick up the class that initializes Flipper, 64 | since Flipper library is not available in release mode 65 | */ 66 | Class aClass = Class.forName("com.fooddeliveryapp.ReactNativeFlipper"); 67 | aClass 68 | .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) 69 | .invoke(null, context, reactInstanceManager); 70 | } catch (ClassNotFoundException e) { 71 | e.printStackTrace(); 72 | } catch (NoSuchMethodException e) { 73 | e.printStackTrace(); 74 | } catch (IllegalAccessException e) { 75 | e.printStackTrace(); 76 | } catch (InvocationTargetException e) { 77 | e.printStackTrace(); 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | FoodDeliveryApp 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = "29.0.2" 6 | minSdkVersion = 21 7 | compileSdkVersion = 29 8 | targetSdkVersion = 29 9 | // add this 2 lines 10 | playServicesVersion = "17.0.0" 11 | androidMapsUtilsVersion = "2.2.0" 12 | // end this 2 lines 13 | } 14 | repositories { 15 | google() 16 | jcenter() 17 | } 18 | dependencies { 19 | classpath('com.android.tools.build:gradle:4.1.0') 20 | // NOTE: Do not place your application dependencies here; they belong 21 | // in the individual module build.gradle files 22 | } 23 | } 24 | 25 | allprojects { 26 | repositories { 27 | mavenLocal() 28 | maven { 29 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 30 | url("$rootDir/../node_modules/react-native/android") 31 | } 32 | maven { 33 | // Android JSC is installed from npm 34 | url("$rootDir/../node_modules/jsc-android/dist") 35 | } 36 | 37 | google() 38 | jcenter() 39 | maven { url 'https://www.jitpack.io' } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | # Automatically convert third-party libraries to use AndroidX 25 | android.enableJetifier=true 26 | 27 | # Version of flipper SDK to use with React Native 28 | FLIPPER_VERSION=0.54.0 29 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jun 23 21:17:23 MYT 2021 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 7 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin or MSYS, switch paths to Windows format before running java 129 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=`expr $i + 1` 158 | done 159 | case $i in 160 | 0) set -- ;; 161 | 1) set -- "$args0" ;; 162 | 2) set -- "$args0" "$args1" ;; 163 | 3) set -- "$args0" "$args1" "$args2" ;; 164 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=`save "$@"` 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 182 | 183 | exec "$JAVACMD" "$@" 184 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto init 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto init 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :init 68 | @rem Get command-line arguments, handling Windows variants 69 | 70 | if not "%OS%" == "Windows_NT" goto win9xME_args 71 | 72 | :win9xME_args 73 | @rem Slurp the command line arguments. 74 | set CMD_LINE_ARGS= 75 | set _SKIP=2 76 | 77 | :win9xME_args_slurp 78 | if "x%~1" == "x" goto execute 79 | 80 | set CMD_LINE_ARGS=%* 81 | 82 | :execute 83 | @rem Setup the command line 84 | 85 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 86 | 87 | @rem Execute Gradle 88 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 89 | 90 | :end 91 | @rem End local scope for the variables with windows NT shell 92 | if "%ERRORLEVEL%"=="0" goto mainEnd 93 | 94 | :fail 95 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 96 | rem the _cmd.exe /c_ return code! 97 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 98 | exit /b 1 99 | 100 | :mainEnd 101 | if "%OS%"=="Windows_NT" endlocal 102 | 103 | :omega 104 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'FoodDeliveryApp' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FoodDeliveryApp", 3 | "displayName": "FoodDeliveryApp" 4 | } -------------------------------------------------------------------------------- /assets/fonts/Roboto-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Black.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-BlackItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Italic.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-LightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-MediumItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-Thin.ttf -------------------------------------------------------------------------------- /assets/fonts/Roboto-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/Roboto-ThinItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-Italic.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-Light.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-LightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/RobotoCondensed-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/fonts/RobotoCondensed-Regular.ttf -------------------------------------------------------------------------------- /assets/icons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/back.png -------------------------------------------------------------------------------- /assets/icons/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/car.png -------------------------------------------------------------------------------- /assets/icons/cutlery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/cutlery.png -------------------------------------------------------------------------------- /assets/icons/donut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/donut.png -------------------------------------------------------------------------------- /assets/icons/drink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/drink.png -------------------------------------------------------------------------------- /assets/icons/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/fire.png -------------------------------------------------------------------------------- /assets/icons/fries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/fries.png -------------------------------------------------------------------------------- /assets/icons/hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/hamburger.png -------------------------------------------------------------------------------- /assets/icons/hotdog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/hotdog.png -------------------------------------------------------------------------------- /assets/icons/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/like.png -------------------------------------------------------------------------------- /assets/icons/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/list.png -------------------------------------------------------------------------------- /assets/icons/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/location.png -------------------------------------------------------------------------------- /assets/icons/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/mastercard.png -------------------------------------------------------------------------------- /assets/icons/nearby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/nearby.png -------------------------------------------------------------------------------- /assets/icons/noodle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/noodle.png -------------------------------------------------------------------------------- /assets/icons/pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/pin.png -------------------------------------------------------------------------------- /assets/icons/pizza.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/pizza.png -------------------------------------------------------------------------------- /assets/icons/red-pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/red-pin.png -------------------------------------------------------------------------------- /assets/icons/rice-bowl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/rice-bowl.png -------------------------------------------------------------------------------- /assets/icons/salad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/salad.png -------------------------------------------------------------------------------- /assets/icons/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/search.png -------------------------------------------------------------------------------- /assets/icons/shopping-basket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/shopping-basket.png -------------------------------------------------------------------------------- /assets/icons/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/star.png -------------------------------------------------------------------------------- /assets/icons/sushi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/sushi.png -------------------------------------------------------------------------------- /assets/icons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/icons/user.png -------------------------------------------------------------------------------- /assets/images/avatar-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/avatar-1.jpg -------------------------------------------------------------------------------- /assets/images/avatar-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/avatar-2.jpg -------------------------------------------------------------------------------- /assets/images/avatar-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/avatar-3.jpg -------------------------------------------------------------------------------- /assets/images/avatar-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/avatar-4.jpg -------------------------------------------------------------------------------- /assets/images/avatar-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/avatar-5.jpg -------------------------------------------------------------------------------- /assets/images/baked-fries.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/baked-fries.jpg -------------------------------------------------------------------------------- /assets/images/burger-restaurant-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/burger-restaurant-2.jpg -------------------------------------------------------------------------------- /assets/images/burger-restaurant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/burger-restaurant.jpg -------------------------------------------------------------------------------- /assets/images/chicago-hot-dog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/chicago-hot-dog.jpg -------------------------------------------------------------------------------- /assets/images/crispy-chicken-burger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/crispy-chicken-burger.jpg -------------------------------------------------------------------------------- /assets/images/fries-restaurant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/fries-restaurant.jpg -------------------------------------------------------------------------------- /assets/images/hawaiian-pizza.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/hawaiian-pizza.jpg -------------------------------------------------------------------------------- /assets/images/honey-mustard-chicken-burger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/honey-mustard-chicken-burger.jpg -------------------------------------------------------------------------------- /assets/images/hot-dog-restaurant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/hot-dog-restaurant.jpg -------------------------------------------------------------------------------- /assets/images/ice-kacang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/ice-kacang.jpg -------------------------------------------------------------------------------- /assets/images/japanese-restaurant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/japanese-restaurant.jpg -------------------------------------------------------------------------------- /assets/images/kek-lapis-shop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/kek-lapis-shop.jpg -------------------------------------------------------------------------------- /assets/images/kek-lapis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/kek-lapis.jpg -------------------------------------------------------------------------------- /assets/images/kolo-mee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/kolo-mee.jpg -------------------------------------------------------------------------------- /assets/images/nasi-briyani-mutton.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/nasi-briyani-mutton.jpg -------------------------------------------------------------------------------- /assets/images/nasi-lemak.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/nasi-lemak.jpg -------------------------------------------------------------------------------- /assets/images/noodle-shop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/noodle-shop.jpg -------------------------------------------------------------------------------- /assets/images/pizza-restaurant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/pizza-restaurant.jpg -------------------------------------------------------------------------------- /assets/images/pizza.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/pizza.jpg -------------------------------------------------------------------------------- /assets/images/salad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/salad.jpg -------------------------------------------------------------------------------- /assets/images/sarawak-laksa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/sarawak-laksa.jpg -------------------------------------------------------------------------------- /assets/images/sushi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/sushi.jpg -------------------------------------------------------------------------------- /assets/images/teh-c-peng.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/teh-c-peng.jpg -------------------------------------------------------------------------------- /assets/images/tomato-pasta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Priyadarshan2000/React-Native-Food-Ordering-App/779e02f6dfca67d2e526d8fc4d9facfcdb78cae4/assets/images/tomato-pasta.jpg -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:metro-react-native-babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /constants/icons.js: -------------------------------------------------------------------------------- 1 | export const back = require("../assets/icons/back.png"); 2 | export const car = require("../assets/icons/car.png"); 3 | export const cutlery = require("../assets/icons/cutlery.png"); 4 | export const donut = require("../assets/icons/donut.png"); 5 | export const drink = require("../assets/icons/drink.png"); 6 | export const fire = require("../assets/icons/fire.png"); 7 | export const fries = require("../assets/icons/fries.png"); 8 | export const hamburger = require("../assets/icons/hamburger.png"); 9 | export const hotdog = require("../assets/icons/hotdog.png"); 10 | export const like = require("../assets/icons/like.png"); 11 | export const list = require("../assets/icons/list.png"); 12 | export const location = require("../assets/icons/location.png"); 13 | export const master_card = require("../assets/icons/mastercard.png"); 14 | export const nearby = require("../assets/icons/nearby.png"); 15 | export const noodle = require("../assets/icons/noodle.png"); 16 | export const pin = require("../assets/icons/pin.png"); 17 | export const pizza = require("../assets/icons/pizza.png"); 18 | export const red_pin = require("../assets/icons/red-pin.png"); 19 | export const rice_bowl = require("../assets/icons/rice-bowl.png"); 20 | export const salad = require("../assets/icons/salad.png"); 21 | export const search = require("../assets/icons/search.png"); 22 | export const basket = require("../assets/icons/shopping-basket.png"); 23 | export const star = require("../assets/icons/star.png"); 24 | export const sushi = require("../assets/icons/sushi.png"); 25 | export const user = require("../assets/icons/user.png"); 26 | 27 | export default { 28 | back, 29 | car, 30 | cutlery, 31 | donut, 32 | drink, 33 | fire, 34 | fries, 35 | hamburger, 36 | hotdog, 37 | like, 38 | list, 39 | location, 40 | master_card, 41 | nearby, 42 | noodle, 43 | pin, 44 | pizza, 45 | red_pin, 46 | rice_bowl, 47 | salad, 48 | search, 49 | basket, 50 | star, 51 | sushi, 52 | user, 53 | } -------------------------------------------------------------------------------- /constants/images.js: -------------------------------------------------------------------------------- 1 | 2 | const avatar_1 = require("../assets/images/avatar-1.jpg"); 3 | const avatar_2 = require("../assets/images/avatar-2.jpg"); 4 | const avatar_3 = require("../assets/images/avatar-3.jpg"); 5 | const avatar_4 = require("../assets/images/avatar-4.jpg"); 6 | const avatar_5 = require("../assets/images/avatar-5.jpg"); 7 | const baked_fries = require("../assets/images/baked-fries.jpg"); 8 | const burger_restaurant_1 = require("../assets/images/burger-restaurant.jpg"); 9 | const burger_restaurant_2 = require("../assets/images/burger-restaurant-2.jpg"); 10 | const chicago_hot_dog = require("../assets/images/chicago-hot-dog.jpg"); 11 | const crispy_chicken_burger = require("../assets/images/crispy-chicken-burger.jpg"); 12 | const fries_restaurant = require("../assets/images/fries-restaurant.jpg"); 13 | const hawaiian_pizza = require("../assets/images/hawaiian-pizza.jpg"); 14 | const honey_mustard_chicken_burger = require("../assets/images/honey-mustard-chicken-burger.jpg"); 15 | const hot_dog_restaurant = require("../assets/images/hot-dog-restaurant.jpg"); 16 | const ice_kacang = require("../assets/images/ice-kacang.jpg"); 17 | const japanese_restaurant = require("../assets/images/japanese-restaurant.jpg"); 18 | const kek_lapis_shop = require("../assets/images/kek-lapis-shop.jpg"); 19 | const kek_lapis = require("../assets/images/kek-lapis.jpg"); 20 | const kolo_mee = require("../assets/images/kolo-mee.jpg"); 21 | const nasi_briyani_mutton = require("../assets/images/nasi-briyani-mutton.jpg"); 22 | const nasi_lemak = require("../assets/images/nasi-lemak.jpg"); 23 | const noodle_shop = require("../assets/images/noodle-shop.jpg"); 24 | const pizza_restaurant = require("../assets/images/pizza-restaurant.jpg"); 25 | const pizza = require("../assets/images/pizza.jpg"); 26 | const salad = require("../assets/images/salad.jpg"); 27 | const sarawak_laksa = require("../assets/images/sarawak-laksa.jpg"); 28 | const sushi = require("../assets/images/sushi.jpg"); 29 | const teh_c_peng = require("../assets/images/teh-c-peng.jpg"); 30 | const tomato_pasta = require("../assets/images/tomato-pasta.jpg"); 31 | 32 | export default { 33 | avatar_1, 34 | avatar_2, 35 | avatar_3, 36 | avatar_4, 37 | avatar_5, 38 | baked_fries, 39 | burger_restaurant_1, 40 | burger_restaurant_2, 41 | chicago_hot_dog, 42 | crispy_chicken_burger, 43 | 44 | fries_restaurant, 45 | hawaiian_pizza, 46 | honey_mustard_chicken_burger, 47 | hot_dog_restaurant, 48 | ice_kacang, 49 | 50 | japanese_restaurant, 51 | kek_lapis_shop, 52 | kek_lapis, 53 | kolo_mee, 54 | nasi_briyani_mutton, 55 | nasi_lemak, 56 | noodle_shop, 57 | pizza_restaurant, 58 | pizza, 59 | sarawak_laksa, 60 | sushi, 61 | teh_c_peng, 62 | tomato_pasta, 63 | } -------------------------------------------------------------------------------- /constants/index.js: -------------------------------------------------------------------------------- 1 | import icons from "./icons"; 2 | import images from "./images"; 3 | import { COLORS, SIZES, FONTS } from "./theme"; 4 | import GOOGLE_API_KEY from "./maps" 5 | 6 | export { icons, images, COLORS, SIZES, FONTS, GOOGLE_API_KEY }; 7 | -------------------------------------------------------------------------------- /constants/maps.js: -------------------------------------------------------------------------------- 1 | const GOOGLE_API_KEY = "AIzaSyD_lMXvGFGsiO2qhvX7Vs49r-sdICRtrAQ" 2 | 3 | export default GOOGLE_API_KEY -------------------------------------------------------------------------------- /constants/theme.js: -------------------------------------------------------------------------------- 1 | import { Dimensions } from "react-native"; 2 | const { width, height } = Dimensions.get("window"); 3 | 4 | export const COLORS = { 5 | // base colors 6 | primary: "#FC6D3F", // orange 7 | secondary: "#CDCDD2", // gray 8 | 9 | // colors 10 | black: "#1E1F20", 11 | white: "#FFFFFF", 12 | 13 | lightGray: "#F5F5F6", 14 | lightGray2: "#F6F6F7", 15 | lightGray3: "#EFEFF1", 16 | lightGray4: "#F8F8F9", 17 | transparent: "transparent", 18 | darkgray: '#898C95', 19 | }; 20 | 21 | export const SIZES = { 22 | // global sizes 23 | base: 8, 24 | font: 14, 25 | radius: 30, 26 | padding: 10, 27 | padding2: 12, 28 | 29 | // font sizes 30 | largeTitle: 50, 31 | h1: 30, 32 | h2: 22, 33 | h3: 20, 34 | h4: 18, 35 | body1: 30, 36 | body2: 20, 37 | body3: 16, 38 | body4: 14, 39 | body5: 12, 40 | 41 | // app dimensions 42 | width, 43 | height 44 | }; 45 | 46 | export const FONTS = { 47 | largeTitle: { fontFamily: "Roboto-regular", fontSize: SIZES.largeTitle, lineHeight: 55 }, 48 | h1: { fontFamily: "Roboto-Black", fontSize: SIZES.h1, lineHeight: 36 }, 49 | h2: { fontFamily: "Roboto-Bold", fontSize: SIZES.h2, lineHeight: 30 }, 50 | h3: { fontFamily: "Roboto-Bold", fontSize: SIZES.h3, lineHeight: 22 }, 51 | h4: { fontFamily: "Roboto-Bold", fontSize: SIZES.h4, lineHeight: 22 }, 52 | body1: { fontFamily: "Roboto-Regular", fontSize: SIZES.body1, lineHeight: 36 }, 53 | body2: { fontFamily: "Roboto-Regular", fontSize: SIZES.body2, lineHeight: 30 }, 54 | body3: { fontFamily: "Roboto-Regular", fontSize: SIZES.body3, lineHeight: 22 }, 55 | body4: { fontFamily: "Roboto-Regular", fontSize: SIZES.body4, lineHeight: 22 }, 56 | body5: { fontFamily: "Roboto-Regular", fontSize: SIZES.body5, lineHeight: 22 }, 57 | }; 58 | 59 | const appTheme = { COLORS, SIZES, FONTS }; 60 | 61 | export default appTheme; -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp-tvOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSExceptionDomains 28 | 29 | localhost 30 | 31 | NSExceptionAllowsInsecureHTTPLoads 32 | 33 | 34 | 35 | 36 | NSLocationWhenInUseUsageDescription 37 | 38 | UILaunchStoryboardName 39 | LaunchScreen 40 | UIRequiredDeviceCapabilities 41 | 42 | armv7 43 | 44 | UISupportedInterfaceOrientations 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp-tvOSTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp.xcodeproj/xcshareddata/xcschemes/FoodDeliveryApp-tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp.xcodeproj/xcshareddata/xcschemes/FoodDeliveryApp.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : UIResponder 5 | 6 | @property (nonatomic, strong) UIWindow *window; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | #import 5 | #import 6 | 7 | #ifdef FB_SONARKIT_ENABLED 8 | #import 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | #import 15 | 16 | 17 | static void InitializeFlipper(UIApplication *application) { 18 | FlipperClient *client = [FlipperClient sharedClient]; 19 | SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; 20 | [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; 21 | [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; 22 | [client addPlugin:[FlipperKitReactPlugin new]]; 23 | [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; 24 | [client start]; 25 | } 26 | #endif 27 | 28 | @implementation AppDelegate 29 | 30 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 31 | { 32 | 33 | [GMSServices provideAPIKey:@"YOUR-API-KEY"]; // add this line using the api key obtained from Google Console 34 | 35 | #ifdef FB_SONARKIT_ENABLED 36 | InitializeFlipper(application); 37 | #endif 38 | 39 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; 40 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge 41 | moduleName:@"FoodDeliveryApp" 42 | initialProperties:nil]; 43 | 44 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; 45 | 46 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 47 | UIViewController *rootViewController = [UIViewController new]; 48 | rootViewController.view = rootView; 49 | self.window.rootViewController = rootViewController; 50 | [self.window makeKeyAndVisible]; 51 | return YES; 52 | } 53 | 54 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 55 | { 56 | #if DEBUG 57 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; 58 | #else 59 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 60 | #endif 61 | } 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "scale" : "1x", 46 | "size" : "1024x1024" 47 | } 48 | ], 49 | "info" : { 50 | "author" : "xcode", 51 | "version" : 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | FoodDeliveryApp 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | NSExceptionDomains 32 | 33 | localhost 34 | 35 | NSExceptionAllowsInsecureHTTPLoads 36 | 37 | 38 | 39 | 40 | NSLocationWhenInUseUsageDescription 41 | 42 | UIAppFonts 43 | 44 | Roboto-Black.ttf 45 | Roboto-BlackItalic.ttf 46 | Roboto-Bold.ttf 47 | Roboto-BoldItalic.ttf 48 | Roboto-Italic.ttf 49 | Roboto-Light.ttf 50 | Roboto-LightItalic.ttf 51 | Roboto-Medium.ttf 52 | Roboto-MediumItalic.ttf 53 | Roboto-Regular.ttf 54 | Roboto-Thin.ttf 55 | Roboto-ThinItalic.ttf 56 | RobotoCondensed-Bold.ttf 57 | RobotoCondensed-BoldItalic.ttf 58 | RobotoCondensed-Italic.ttf 59 | RobotoCondensed-Light.ttf 60 | RobotoCondensed-LightItalic.ttf 61 | RobotoCondensed-Regular.ttf 62 | 63 | UILaunchStoryboardName 64 | LaunchScreen 65 | UIRequiredDeviceCapabilities 66 | 67 | armv7 68 | 69 | UISupportedInterfaceOrientations 70 | 71 | UIInterfaceOrientationPortrait 72 | UIInterfaceOrientationLandscapeLeft 73 | UIInterfaceOrientationLandscapeRight 74 | 75 | UIViewControllerBasedStatusBarAppearance 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /ios/FoodDeliveryApp/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ios/FoodDeliveryAppTests/FoodDeliveryAppTests.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import 5 | #import 6 | 7 | #define TIMEOUT_SECONDS 600 8 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 9 | 10 | @interface FoodDeliveryAppTests : XCTestCase 11 | 12 | @end 13 | 14 | @implementation FoodDeliveryAppTests 15 | 16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 17 | { 18 | if (test(view)) { 19 | return YES; 20 | } 21 | for (UIView *subview in [view subviews]) { 22 | if ([self findSubviewInView:subview matching:test]) { 23 | return YES; 24 | } 25 | } 26 | return NO; 27 | } 28 | 29 | - (void)testRendersWelcomeScreen 30 | { 31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 33 | BOOL foundElement = NO; 34 | 35 | __block NSString *redboxError = nil; 36 | #ifdef DEBUG 37 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 38 | if (level >= RCTLogLevelError) { 39 | redboxError = message; 40 | } 41 | }); 42 | #endif 43 | 44 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 45 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 46 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 47 | 48 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 49 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 50 | return YES; 51 | } 52 | return NO; 53 | }]; 54 | } 55 | 56 | #ifdef DEBUG 57 | RCTSetLogFunction(RCTDefaultLogFunction); 58 | #endif 59 | 60 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 61 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 62 | } 63 | 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /ios/FoodDeliveryAppTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../node_modules/react-native/scripts/react_native_pods' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | platform :ios, '10.0' 5 | 6 | target 'FoodDeliveryApp' do 7 | # React Native Maps dependencies 8 | rn_maps_path = '../node_modules/react-native-maps' 9 | pod 'react-native-google-maps', :path => rn_maps_path 10 | pod 'GoogleMaps' 11 | pod 'Google-Maps-iOS-Utils' 12 | 13 | config = use_native_modules! 14 | 15 | use_react_native!(:path => config["reactNativePath"]) 16 | 17 | target 'FoodDeliveryAppTests' do 18 | inherit! :complete 19 | # Pods for testing 20 | end 21 | 22 | # Enables Flipper. 23 | # 24 | # Note that if you have use_frameworks! enabled, Flipper will not work and 25 | # you should disable these next few lines. 26 | use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' }) 27 | post_install do |installer| 28 | flipper_post_install(installer) 29 | end 30 | end 31 | 32 | target 'FoodDeliveryApp-tvOS' do 33 | # Pods for FoodDeliveryApp-tvOS 34 | 35 | target 'FoodDeliveryApp-tvOSTests' do 36 | inherit! :search_paths 37 | # Pods for testing 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost-for-react-native (1.63.0) 3 | - CocoaAsyncSocket (7.6.5) 4 | - DoubleConversion (1.1.6) 5 | - FBLazyVector (0.64.2) 6 | - FBReactNativeSpec (0.64.2): 7 | - RCT-Folly (= 2020.01.13.00) 8 | - RCTRequired (= 0.64.2) 9 | - RCTTypeSafety (= 0.64.2) 10 | - React-Core (= 0.64.2) 11 | - React-jsi (= 0.64.2) 12 | - ReactCommon/turbomodule/core (= 0.64.2) 13 | - Flipper (0.87.0): 14 | - Flipper-Folly (~> 2.5) 15 | - Flipper-RSocket (~> 1.3) 16 | - Flipper-DoubleConversion (1.1.7) 17 | - Flipper-Folly (2.5.3): 18 | - boost-for-react-native 19 | - Flipper-DoubleConversion 20 | - Flipper-Glog 21 | - libevent (~> 2.1.12) 22 | - OpenSSL-Universal (= 1.1.180) 23 | - Flipper-Glog (0.3.6) 24 | - Flipper-PeerTalk (0.0.4) 25 | - Flipper-RSocket (1.3.1): 26 | - Flipper-Folly (~> 2.5) 27 | - FlipperKit (0.87.0): 28 | - FlipperKit/Core (= 0.87.0) 29 | - FlipperKit/Core (0.87.0): 30 | - Flipper (~> 0.87.0) 31 | - FlipperKit/CppBridge 32 | - FlipperKit/FBCxxFollyDynamicConvert 33 | - FlipperKit/FBDefines 34 | - FlipperKit/FKPortForwarding 35 | - FlipperKit/CppBridge (0.87.0): 36 | - Flipper (~> 0.87.0) 37 | - FlipperKit/FBCxxFollyDynamicConvert (0.87.0): 38 | - Flipper-Folly (~> 2.5) 39 | - FlipperKit/FBDefines (0.87.0) 40 | - FlipperKit/FKPortForwarding (0.87.0): 41 | - CocoaAsyncSocket (~> 7.6) 42 | - Flipper-PeerTalk (~> 0.0.4) 43 | - FlipperKit/FlipperKitHighlightOverlay (0.87.0) 44 | - FlipperKit/FlipperKitLayoutHelpers (0.87.0): 45 | - FlipperKit/Core 46 | - FlipperKit/FlipperKitHighlightOverlay 47 | - FlipperKit/FlipperKitLayoutTextSearchable 48 | - FlipperKit/FlipperKitLayoutIOSDescriptors (0.87.0): 49 | - FlipperKit/Core 50 | - FlipperKit/FlipperKitHighlightOverlay 51 | - FlipperKit/FlipperKitLayoutHelpers 52 | - YogaKit (~> 1.18) 53 | - FlipperKit/FlipperKitLayoutPlugin (0.87.0): 54 | - FlipperKit/Core 55 | - FlipperKit/FlipperKitHighlightOverlay 56 | - FlipperKit/FlipperKitLayoutHelpers 57 | - FlipperKit/FlipperKitLayoutIOSDescriptors 58 | - FlipperKit/FlipperKitLayoutTextSearchable 59 | - YogaKit (~> 1.18) 60 | - FlipperKit/FlipperKitLayoutTextSearchable (0.87.0) 61 | - FlipperKit/FlipperKitNetworkPlugin (0.87.0): 62 | - FlipperKit/Core 63 | - FlipperKit/FlipperKitReactPlugin (0.87.0): 64 | - FlipperKit/Core 65 | - FlipperKit/FlipperKitUserDefaultsPlugin (0.87.0): 66 | - FlipperKit/Core 67 | - FlipperKit/SKIOSNetworkPlugin (0.87.0): 68 | - FlipperKit/Core 69 | - FlipperKit/FlipperKitNetworkPlugin 70 | - glog (0.3.5) 71 | - Google-Maps-iOS-Utils (2.1.0): 72 | - Google-Maps-iOS-Utils/Clustering (= 2.1.0) 73 | - Google-Maps-iOS-Utils/Geometry (= 2.1.0) 74 | - Google-Maps-iOS-Utils/Heatmap (= 2.1.0) 75 | - Google-Maps-iOS-Utils/QuadTree (= 2.1.0) 76 | - GoogleMaps 77 | - Google-Maps-iOS-Utils/Clustering (2.1.0): 78 | - Google-Maps-iOS-Utils/QuadTree 79 | - GoogleMaps 80 | - Google-Maps-iOS-Utils/Geometry (2.1.0): 81 | - GoogleMaps 82 | - Google-Maps-iOS-Utils/Heatmap (2.1.0): 83 | - Google-Maps-iOS-Utils/QuadTree 84 | - GoogleMaps 85 | - Google-Maps-iOS-Utils/QuadTree (2.1.0): 86 | - GoogleMaps 87 | - GoogleMaps (3.5.0): 88 | - GoogleMaps/Maps (= 3.5.0) 89 | - GoogleMaps/Base (3.5.0) 90 | - GoogleMaps/Maps (3.5.0): 91 | - GoogleMaps/Base 92 | - libevent (2.1.12) 93 | - OpenSSL-Universal (1.1.180) 94 | - RCT-Folly (2020.01.13.00): 95 | - boost-for-react-native 96 | - DoubleConversion 97 | - glog 98 | - RCT-Folly/Default (= 2020.01.13.00) 99 | - RCT-Folly/Default (2020.01.13.00): 100 | - boost-for-react-native 101 | - DoubleConversion 102 | - glog 103 | - RCTRequired (0.64.2) 104 | - RCTTypeSafety (0.64.2): 105 | - FBLazyVector (= 0.64.2) 106 | - RCT-Folly (= 2020.01.13.00) 107 | - RCTRequired (= 0.64.2) 108 | - React-Core (= 0.64.2) 109 | - React (0.64.2): 110 | - React-Core (= 0.64.2) 111 | - React-Core/DevSupport (= 0.64.2) 112 | - React-Core/RCTWebSocket (= 0.64.2) 113 | - React-RCTActionSheet (= 0.64.2) 114 | - React-RCTAnimation (= 0.64.2) 115 | - React-RCTBlob (= 0.64.2) 116 | - React-RCTImage (= 0.64.2) 117 | - React-RCTLinking (= 0.64.2) 118 | - React-RCTNetwork (= 0.64.2) 119 | - React-RCTSettings (= 0.64.2) 120 | - React-RCTText (= 0.64.2) 121 | - React-RCTVibration (= 0.64.2) 122 | - React-callinvoker (0.64.2) 123 | - React-Core (0.64.2): 124 | - glog 125 | - RCT-Folly (= 2020.01.13.00) 126 | - React-Core/Default (= 0.64.2) 127 | - React-cxxreact (= 0.64.2) 128 | - React-jsi (= 0.64.2) 129 | - React-jsiexecutor (= 0.64.2) 130 | - React-perflogger (= 0.64.2) 131 | - Yoga 132 | - React-Core/CoreModulesHeaders (0.64.2): 133 | - glog 134 | - RCT-Folly (= 2020.01.13.00) 135 | - React-Core/Default 136 | - React-cxxreact (= 0.64.2) 137 | - React-jsi (= 0.64.2) 138 | - React-jsiexecutor (= 0.64.2) 139 | - React-perflogger (= 0.64.2) 140 | - Yoga 141 | - React-Core/Default (0.64.2): 142 | - glog 143 | - RCT-Folly (= 2020.01.13.00) 144 | - React-cxxreact (= 0.64.2) 145 | - React-jsi (= 0.64.2) 146 | - React-jsiexecutor (= 0.64.2) 147 | - React-perflogger (= 0.64.2) 148 | - Yoga 149 | - React-Core/DevSupport (0.64.2): 150 | - glog 151 | - RCT-Folly (= 2020.01.13.00) 152 | - React-Core/Default (= 0.64.2) 153 | - React-Core/RCTWebSocket (= 0.64.2) 154 | - React-cxxreact (= 0.64.2) 155 | - React-jsi (= 0.64.2) 156 | - React-jsiexecutor (= 0.64.2) 157 | - React-jsinspector (= 0.64.2) 158 | - React-perflogger (= 0.64.2) 159 | - Yoga 160 | - React-Core/RCTActionSheetHeaders (0.64.2): 161 | - glog 162 | - RCT-Folly (= 2020.01.13.00) 163 | - React-Core/Default 164 | - React-cxxreact (= 0.64.2) 165 | - React-jsi (= 0.64.2) 166 | - React-jsiexecutor (= 0.64.2) 167 | - React-perflogger (= 0.64.2) 168 | - Yoga 169 | - React-Core/RCTAnimationHeaders (0.64.2): 170 | - glog 171 | - RCT-Folly (= 2020.01.13.00) 172 | - React-Core/Default 173 | - React-cxxreact (= 0.64.2) 174 | - React-jsi (= 0.64.2) 175 | - React-jsiexecutor (= 0.64.2) 176 | - React-perflogger (= 0.64.2) 177 | - Yoga 178 | - React-Core/RCTBlobHeaders (0.64.2): 179 | - glog 180 | - RCT-Folly (= 2020.01.13.00) 181 | - React-Core/Default 182 | - React-cxxreact (= 0.64.2) 183 | - React-jsi (= 0.64.2) 184 | - React-jsiexecutor (= 0.64.2) 185 | - React-perflogger (= 0.64.2) 186 | - Yoga 187 | - React-Core/RCTImageHeaders (0.64.2): 188 | - glog 189 | - RCT-Folly (= 2020.01.13.00) 190 | - React-Core/Default 191 | - React-cxxreact (= 0.64.2) 192 | - React-jsi (= 0.64.2) 193 | - React-jsiexecutor (= 0.64.2) 194 | - React-perflogger (= 0.64.2) 195 | - Yoga 196 | - React-Core/RCTLinkingHeaders (0.64.2): 197 | - glog 198 | - RCT-Folly (= 2020.01.13.00) 199 | - React-Core/Default 200 | - React-cxxreact (= 0.64.2) 201 | - React-jsi (= 0.64.2) 202 | - React-jsiexecutor (= 0.64.2) 203 | - React-perflogger (= 0.64.2) 204 | - Yoga 205 | - React-Core/RCTNetworkHeaders (0.64.2): 206 | - glog 207 | - RCT-Folly (= 2020.01.13.00) 208 | - React-Core/Default 209 | - React-cxxreact (= 0.64.2) 210 | - React-jsi (= 0.64.2) 211 | - React-jsiexecutor (= 0.64.2) 212 | - React-perflogger (= 0.64.2) 213 | - Yoga 214 | - React-Core/RCTSettingsHeaders (0.64.2): 215 | - glog 216 | - RCT-Folly (= 2020.01.13.00) 217 | - React-Core/Default 218 | - React-cxxreact (= 0.64.2) 219 | - React-jsi (= 0.64.2) 220 | - React-jsiexecutor (= 0.64.2) 221 | - React-perflogger (= 0.64.2) 222 | - Yoga 223 | - React-Core/RCTTextHeaders (0.64.2): 224 | - glog 225 | - RCT-Folly (= 2020.01.13.00) 226 | - React-Core/Default 227 | - React-cxxreact (= 0.64.2) 228 | - React-jsi (= 0.64.2) 229 | - React-jsiexecutor (= 0.64.2) 230 | - React-perflogger (= 0.64.2) 231 | - Yoga 232 | - React-Core/RCTVibrationHeaders (0.64.2): 233 | - glog 234 | - RCT-Folly (= 2020.01.13.00) 235 | - React-Core/Default 236 | - React-cxxreact (= 0.64.2) 237 | - React-jsi (= 0.64.2) 238 | - React-jsiexecutor (= 0.64.2) 239 | - React-perflogger (= 0.64.2) 240 | - Yoga 241 | - React-Core/RCTWebSocket (0.64.2): 242 | - glog 243 | - RCT-Folly (= 2020.01.13.00) 244 | - React-Core/Default (= 0.64.2) 245 | - React-cxxreact (= 0.64.2) 246 | - React-jsi (= 0.64.2) 247 | - React-jsiexecutor (= 0.64.2) 248 | - React-perflogger (= 0.64.2) 249 | - Yoga 250 | - React-CoreModules (0.64.2): 251 | - FBReactNativeSpec (= 0.64.2) 252 | - RCT-Folly (= 2020.01.13.00) 253 | - RCTTypeSafety (= 0.64.2) 254 | - React-Core/CoreModulesHeaders (= 0.64.2) 255 | - React-jsi (= 0.64.2) 256 | - React-RCTImage (= 0.64.2) 257 | - ReactCommon/turbomodule/core (= 0.64.2) 258 | - React-cxxreact (0.64.2): 259 | - boost-for-react-native (= 1.63.0) 260 | - DoubleConversion 261 | - glog 262 | - RCT-Folly (= 2020.01.13.00) 263 | - React-callinvoker (= 0.64.2) 264 | - React-jsi (= 0.64.2) 265 | - React-jsinspector (= 0.64.2) 266 | - React-perflogger (= 0.64.2) 267 | - React-runtimeexecutor (= 0.64.2) 268 | - React-jsi (0.64.2): 269 | - boost-for-react-native (= 1.63.0) 270 | - DoubleConversion 271 | - glog 272 | - RCT-Folly (= 2020.01.13.00) 273 | - React-jsi/Default (= 0.64.2) 274 | - React-jsi/Default (0.64.2): 275 | - boost-for-react-native (= 1.63.0) 276 | - DoubleConversion 277 | - glog 278 | - RCT-Folly (= 2020.01.13.00) 279 | - React-jsiexecutor (0.64.2): 280 | - DoubleConversion 281 | - glog 282 | - RCT-Folly (= 2020.01.13.00) 283 | - React-cxxreact (= 0.64.2) 284 | - React-jsi (= 0.64.2) 285 | - React-perflogger (= 0.64.2) 286 | - React-jsinspector (0.64.2) 287 | - react-native-google-maps (0.29.0): 288 | - Google-Maps-iOS-Utils (= 2.1.0) 289 | - GoogleMaps (= 3.5.0) 290 | - React-Core 291 | - react-native-maps (0.29.0): 292 | - React-Core 293 | - react-native-safe-area-context (3.2.0): 294 | - React-Core 295 | - React-perflogger (0.64.2) 296 | - React-RCTActionSheet (0.64.2): 297 | - React-Core/RCTActionSheetHeaders (= 0.64.2) 298 | - React-RCTAnimation (0.64.2): 299 | - FBReactNativeSpec (= 0.64.2) 300 | - RCT-Folly (= 2020.01.13.00) 301 | - RCTTypeSafety (= 0.64.2) 302 | - React-Core/RCTAnimationHeaders (= 0.64.2) 303 | - React-jsi (= 0.64.2) 304 | - ReactCommon/turbomodule/core (= 0.64.2) 305 | - React-RCTBlob (0.64.2): 306 | - FBReactNativeSpec (= 0.64.2) 307 | - RCT-Folly (= 2020.01.13.00) 308 | - React-Core/RCTBlobHeaders (= 0.64.2) 309 | - React-Core/RCTWebSocket (= 0.64.2) 310 | - React-jsi (= 0.64.2) 311 | - React-RCTNetwork (= 0.64.2) 312 | - ReactCommon/turbomodule/core (= 0.64.2) 313 | - React-RCTImage (0.64.2): 314 | - FBReactNativeSpec (= 0.64.2) 315 | - RCT-Folly (= 2020.01.13.00) 316 | - RCTTypeSafety (= 0.64.2) 317 | - React-Core/RCTImageHeaders (= 0.64.2) 318 | - React-jsi (= 0.64.2) 319 | - React-RCTNetwork (= 0.64.2) 320 | - ReactCommon/turbomodule/core (= 0.64.2) 321 | - React-RCTLinking (0.64.2): 322 | - FBReactNativeSpec (= 0.64.2) 323 | - React-Core/RCTLinkingHeaders (= 0.64.2) 324 | - React-jsi (= 0.64.2) 325 | - ReactCommon/turbomodule/core (= 0.64.2) 326 | - React-RCTNetwork (0.64.2): 327 | - FBReactNativeSpec (= 0.64.2) 328 | - RCT-Folly (= 2020.01.13.00) 329 | - RCTTypeSafety (= 0.64.2) 330 | - React-Core/RCTNetworkHeaders (= 0.64.2) 331 | - React-jsi (= 0.64.2) 332 | - ReactCommon/turbomodule/core (= 0.64.2) 333 | - React-RCTSettings (0.64.2): 334 | - FBReactNativeSpec (= 0.64.2) 335 | - RCT-Folly (= 2020.01.13.00) 336 | - RCTTypeSafety (= 0.64.2) 337 | - React-Core/RCTSettingsHeaders (= 0.64.2) 338 | - React-jsi (= 0.64.2) 339 | - ReactCommon/turbomodule/core (= 0.64.2) 340 | - React-RCTText (0.64.2): 341 | - React-Core/RCTTextHeaders (= 0.64.2) 342 | - React-RCTVibration (0.64.2): 343 | - FBReactNativeSpec (= 0.64.2) 344 | - RCT-Folly (= 2020.01.13.00) 345 | - React-Core/RCTVibrationHeaders (= 0.64.2) 346 | - React-jsi (= 0.64.2) 347 | - ReactCommon/turbomodule/core (= 0.64.2) 348 | - React-runtimeexecutor (0.64.2): 349 | - React-jsi (= 0.64.2) 350 | - ReactCommon/turbomodule/core (0.64.2): 351 | - DoubleConversion 352 | - glog 353 | - RCT-Folly (= 2020.01.13.00) 354 | - React-callinvoker (= 0.64.2) 355 | - React-Core (= 0.64.2) 356 | - React-cxxreact (= 0.64.2) 357 | - React-jsi (= 0.64.2) 358 | - React-perflogger (= 0.64.2) 359 | - RNCMaskedView (0.1.11): 360 | - React 361 | - RNGestureHandler (1.10.3): 362 | - React-Core 363 | - RNReanimated (2.2.0): 364 | - DoubleConversion 365 | - FBLazyVector 366 | - FBReactNativeSpec 367 | - glog 368 | - RCT-Folly 369 | - RCTRequired 370 | - RCTTypeSafety 371 | - React 372 | - React-callinvoker 373 | - React-Core 374 | - React-Core/DevSupport 375 | - React-Core/RCTWebSocket 376 | - React-CoreModules 377 | - React-cxxreact 378 | - React-jsi 379 | - React-jsiexecutor 380 | - React-jsinspector 381 | - React-RCTActionSheet 382 | - React-RCTAnimation 383 | - React-RCTBlob 384 | - React-RCTImage 385 | - React-RCTLinking 386 | - React-RCTNetwork 387 | - React-RCTSettings 388 | - React-RCTText 389 | - React-RCTVibration 390 | - ReactCommon/turbomodule/core 391 | - Yoga 392 | - RNScreens (2.18.1): 393 | - React-Core 394 | - RNSVG (9.12.0): 395 | - React 396 | - Yoga (1.14.0) 397 | - YogaKit (1.18.1): 398 | - Yoga (~> 1.14) 399 | 400 | DEPENDENCIES: 401 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 402 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 403 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 404 | - Flipper (= 0.87.0) 405 | - Flipper-DoubleConversion (= 1.1.7) 406 | - Flipper-Folly (= 2.5.3) 407 | - Flipper-Glog (= 0.3.6) 408 | - Flipper-PeerTalk (~> 0.0.4) 409 | - Flipper-RSocket (= 1.3.1) 410 | - FlipperKit (= 0.87.0) 411 | - FlipperKit/Core (= 0.87.0) 412 | - FlipperKit/CppBridge (= 0.87.0) 413 | - FlipperKit/FBCxxFollyDynamicConvert (= 0.87.0) 414 | - FlipperKit/FBDefines (= 0.87.0) 415 | - FlipperKit/FKPortForwarding (= 0.87.0) 416 | - FlipperKit/FlipperKitHighlightOverlay (= 0.87.0) 417 | - FlipperKit/FlipperKitLayoutPlugin (= 0.87.0) 418 | - FlipperKit/FlipperKitLayoutTextSearchable (= 0.87.0) 419 | - FlipperKit/FlipperKitNetworkPlugin (= 0.87.0) 420 | - FlipperKit/FlipperKitReactPlugin (= 0.87.0) 421 | - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.87.0) 422 | - FlipperKit/SKIOSNetworkPlugin (= 0.87.0) 423 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 424 | - Google-Maps-iOS-Utils 425 | - GoogleMaps 426 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 427 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 428 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 429 | - React (from `../node_modules/react-native/`) 430 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 431 | - React-Core (from `../node_modules/react-native/`) 432 | - React-Core/DevSupport (from `../node_modules/react-native/`) 433 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 434 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 435 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 436 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 437 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 438 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) 439 | - react-native-google-maps (from `../node_modules/react-native-maps`) 440 | - react-native-maps (from `../node_modules/react-native-maps`) 441 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 442 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 443 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 444 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 445 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 446 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 447 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 448 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 449 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 450 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 451 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 452 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 453 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 454 | - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" 455 | - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) 456 | - RNReanimated (from `../node_modules/react-native-reanimated`) 457 | - RNScreens (from `../node_modules/react-native-screens`) 458 | - RNSVG (from `../node_modules/react-native-svg`) 459 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 460 | 461 | SPEC REPOS: 462 | trunk: 463 | - boost-for-react-native 464 | - CocoaAsyncSocket 465 | - Flipper 466 | - Flipper-DoubleConversion 467 | - Flipper-Folly 468 | - Flipper-Glog 469 | - Flipper-PeerTalk 470 | - Flipper-RSocket 471 | - FlipperKit 472 | - Google-Maps-iOS-Utils 473 | - GoogleMaps 474 | - libevent 475 | - OpenSSL-Universal 476 | - YogaKit 477 | 478 | EXTERNAL SOURCES: 479 | DoubleConversion: 480 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 481 | FBLazyVector: 482 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 483 | FBReactNativeSpec: 484 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 485 | glog: 486 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 487 | RCT-Folly: 488 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 489 | RCTRequired: 490 | :path: "../node_modules/react-native/Libraries/RCTRequired" 491 | RCTTypeSafety: 492 | :path: "../node_modules/react-native/Libraries/TypeSafety" 493 | React: 494 | :path: "../node_modules/react-native/" 495 | React-callinvoker: 496 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 497 | React-Core: 498 | :path: "../node_modules/react-native/" 499 | React-CoreModules: 500 | :path: "../node_modules/react-native/React/CoreModules" 501 | React-cxxreact: 502 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 503 | React-jsi: 504 | :path: "../node_modules/react-native/ReactCommon/jsi" 505 | React-jsiexecutor: 506 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 507 | React-jsinspector: 508 | :path: "../node_modules/react-native/ReactCommon/jsinspector" 509 | react-native-google-maps: 510 | :path: "../node_modules/react-native-maps" 511 | react-native-maps: 512 | :path: "../node_modules/react-native-maps" 513 | react-native-safe-area-context: 514 | :path: "../node_modules/react-native-safe-area-context" 515 | React-perflogger: 516 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 517 | React-RCTActionSheet: 518 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 519 | React-RCTAnimation: 520 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 521 | React-RCTBlob: 522 | :path: "../node_modules/react-native/Libraries/Blob" 523 | React-RCTImage: 524 | :path: "../node_modules/react-native/Libraries/Image" 525 | React-RCTLinking: 526 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 527 | React-RCTNetwork: 528 | :path: "../node_modules/react-native/Libraries/Network" 529 | React-RCTSettings: 530 | :path: "../node_modules/react-native/Libraries/Settings" 531 | React-RCTText: 532 | :path: "../node_modules/react-native/Libraries/Text" 533 | React-RCTVibration: 534 | :path: "../node_modules/react-native/Libraries/Vibration" 535 | React-runtimeexecutor: 536 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 537 | ReactCommon: 538 | :path: "../node_modules/react-native/ReactCommon" 539 | RNCMaskedView: 540 | :path: "../node_modules/@react-native-community/masked-view" 541 | RNGestureHandler: 542 | :path: "../node_modules/react-native-gesture-handler" 543 | RNReanimated: 544 | :path: "../node_modules/react-native-reanimated" 545 | RNScreens: 546 | :path: "../node_modules/react-native-screens" 547 | RNSVG: 548 | :path: "../node_modules/react-native-svg" 549 | Yoga: 550 | :path: "../node_modules/react-native/ReactCommon/yoga" 551 | 552 | SPEC CHECKSUMS: 553 | boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c 554 | CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 555 | DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de 556 | FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b 557 | FBReactNativeSpec: 74e1c5102a0b6183b8dc7b3e7251ff669cce2cf6 558 | Flipper: 1bd2db48dcc31e4b167b9a33ec1df01c2ded4893 559 | Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 560 | Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c 561 | Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 562 | Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 563 | Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 564 | FlipperKit: 651f50a42eb95c01b3e89a60996dd6aded529eeb 565 | glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 566 | Google-Maps-iOS-Utils: c32891ff472eaaa1fca032beedafa1a013af7875 567 | GoogleMaps: 32ca02de09de357a10ac773f2c70f1986751392d 568 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 569 | OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b 570 | RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c 571 | RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728 572 | RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa 573 | React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69 574 | React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa 575 | React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0 576 | React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f 577 | React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba 578 | React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427 579 | React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3 580 | React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae 581 | react-native-google-maps: 54a19be628292d79d0aaec5277e97f6b17c158dd 582 | react-native-maps: e3dbe21292c4b611209e2ccf1b07db58568f66fc 583 | react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79 584 | React-perflogger: 25373e382fed75ce768a443822f07098a15ab737 585 | React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5 586 | React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa 587 | React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d 588 | React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d 589 | React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9 590 | React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647 591 | React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2 592 | React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f 593 | React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3 594 | React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9 595 | ReactCommon: 149906e01aa51142707a10665185db879898e966 596 | RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 597 | RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211 598 | RNReanimated: 9c13c86454bfd54dab7505c1a054470bfecd2563 599 | RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d 600 | RNSVG: 75670614bca635d3dd64bc267bc199e539cb4fa9 601 | Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac 602 | YogaKit: f782866e155069a2cca2517aafea43200b01fd5a 603 | 604 | PODFILE CHECKSUM: b742e93f7283de32fbbd4dabcb8bf801a437210d 605 | 606 | COCOAPODS: 1.10.1 607 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Metro configuration for React Native 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | */ 7 | 8 | module.exports = { 9 | transformer: { 10 | getTransformOptions: async () => ({ 11 | transform: { 12 | experimentalImportSupport: false, 13 | inlineRequires: false, 14 | }, 15 | }), 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /navigation/tabs.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | View, 4 | Image, 5 | TouchableOpacity 6 | } from 'react-native'; 7 | import { createBottomTabNavigator, BottomTabBar } from "@react-navigation/bottom-tabs" 8 | import Svg, { Path } from 'react-native-svg'; 9 | import { isIphoneX } from 'react-native-iphone-x-helper'; 10 | 11 | import { Home } from "../screens" 12 | 13 | import { COLORS, icons } from "../constants" 14 | 15 | const Tab = createBottomTabNavigator(); 16 | 17 | const TabBarCustomButton = ({ accessibilityState, children, onPress }) => { 18 | 19 | var isSelected = accessibilityState.selected 20 | 21 | if (isSelected) { 22 | return ( 23 | 24 | 25 | 26 | 31 | 35 | 36 | 37 | 38 | 39 | 51 | {children} 52 | 53 | 54 | ) 55 | } else { 56 | return ( 57 | 66 | {children} 67 | 68 | ) 69 | } 70 | } 71 | 72 | const CustomTabBar = (props) => { 73 | if (isIphoneX()) { 74 | return ( 75 | 76 | 86 | 89 | 90 | ) 91 | } else { 92 | return ( 93 | 96 | ) 97 | } 98 | 99 | } 100 | 101 | const Tabs = () => { 102 | return ( 103 | ( 117 | 120 | )} 121 | > 122 | ( 127 | 136 | ), 137 | tabBarButton: (props) => ( 138 | 141 | ) 142 | }} 143 | /> 144 | 145 | ( 150 | 159 | ), 160 | tabBarButton: (props) => ( 161 | 164 | ) 165 | }} 166 | /> 167 | 168 | ( 173 | 182 | ), 183 | tabBarButton: (props) => ( 184 | 187 | ) 188 | }} 189 | /> 190 | 191 | ( 196 | 205 | ), 206 | tabBarButton: (props) => ( 207 | 210 | ) 211 | }} 212 | /> 213 | 214 | ) 215 | } 216 | 217 | export default Tabs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FoodDeliveryApp", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "ios": "react-native run-ios", 8 | "start": "react-native start", 9 | "test": "jest", 10 | "lint": "eslint ." 11 | }, 12 | "dependencies": { 13 | "@react-native-community/masked-view": "^0.1.10", 14 | "@react-navigation/bottom-tabs": "^5.11.2", 15 | "@react-navigation/native": "^5.8.10", 16 | "@react-navigation/stack": "^5.12.8", 17 | "react": "16.13.1", 18 | "react-native": "^0.64.2", 19 | "react-native-gesture-handler": "^1.9.0", 20 | "react-native-iphone-x-helper": "^1.3.1", 21 | "react-native-maps": "^0.29.0", 22 | "react-native-maps-directions": "^1.8.0", 23 | "react-native-reanimated": "^2.2.0", 24 | "react-native-safe-area-context": "^3.1.9", 25 | "react-native-screens": "^2.15.0", 26 | "react-native-svg": "^9.12.0" 27 | }, 28 | "devDependencies": { 29 | "@babel/core": "7.12.9", 30 | "@babel/runtime": "7.12.5", 31 | "@react-native-community/eslint-config": "1.1.0", 32 | "babel-jest": "25.5.1", 33 | "eslint": "6.8.0", 34 | "jest": "25.5.4", 35 | "metro-react-native-babel-preset": "0.59.0", 36 | "react-test-renderer": "16.13.1" 37 | }, 38 | "jest": { 39 | "preset": "react-native" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | project: { 3 | ios: {}, 4 | android: {} 5 | }, 6 | assets: ["./assets/fonts/"] 7 | }; -------------------------------------------------------------------------------- /screens/Home.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | SafeAreaView, 4 | View, 5 | Text, 6 | StyleSheet, 7 | TouchableOpacity, 8 | Image, 9 | FlatList 10 | } from "react-native"; 11 | 12 | import { icons, images, SIZES, COLORS, FONTS } from '../constants' 13 | 14 | const Home = ({ navigation }) => { 15 | 16 | // Dummy Datas 17 | 18 | const initialCurrentLocation = { 19 | streetName: "Kuching", 20 | gps: { 21 | latitude: 1.5496614931250685, 22 | longitude: 110.36381866919922 23 | } 24 | } 25 | 26 | const categoryData = [ 27 | { 28 | id: 1, 29 | name: "Rice", 30 | icon: icons.rice_bowl, 31 | }, 32 | { 33 | id: 2, 34 | name: "Noodles", 35 | icon: icons.noodle, 36 | }, 37 | { 38 | id: 3, 39 | name: "Hot Dogs", 40 | icon: icons.hotdog, 41 | }, 42 | { 43 | id: 4, 44 | name: "Salads", 45 | icon: icons.salad, 46 | }, 47 | { 48 | id: 5, 49 | name: "Burgers", 50 | icon: icons.hamburger, 51 | }, 52 | { 53 | id: 6, 54 | name: "Pizza", 55 | icon: icons.pizza, 56 | }, 57 | { 58 | id: 7, 59 | name: "Snacks", 60 | icon: icons.fries, 61 | }, 62 | { 63 | id: 8, 64 | name: "Sushi", 65 | icon: icons.sushi, 66 | }, 67 | { 68 | id: 9, 69 | name: "Desserts", 70 | icon: icons.donut, 71 | }, 72 | { 73 | id: 10, 74 | name: "Drinks", 75 | icon: icons.drink, 76 | }, 77 | 78 | ] 79 | 80 | // price rating 81 | const affordable = 1 82 | const fairPrice = 2 83 | const expensive = 3 84 | 85 | const restaurantData = [ 86 | { 87 | id: 1, 88 | name: "ByProgrammers Burger", 89 | rating: 4.8, 90 | categories: [5, 7], 91 | priceRating: affordable, 92 | photo: images.burger_restaurant_1, 93 | duration: "30 - 45 min", 94 | location: { 95 | latitude: 1.5347282806345879, 96 | longitude: 110.35632207358996, 97 | }, 98 | courier: { 99 | avatar: images.avatar_1, 100 | name: "Amy" 101 | }, 102 | menu: [ 103 | { 104 | menuId: 1, 105 | name: "Crispy Chicken Burger", 106 | photo: images.crispy_chicken_burger, 107 | description: "Burger with crispy chicken, cheese and lettuce", 108 | calories: 200, 109 | price: 10 110 | }, 111 | { 112 | menuId: 2, 113 | name: "Crispy Chicken Burger with Honey Mustard", 114 | photo: images.honey_mustard_chicken_burger, 115 | description: "Crispy Chicken Burger with Honey Mustard Coleslaw", 116 | calories: 250, 117 | price: 15 118 | }, 119 | { 120 | menuId: 3, 121 | name: "Crispy Baked French Fries", 122 | photo: images.baked_fries, 123 | description: "Crispy Baked French Fries", 124 | calories: 194, 125 | price: 8 126 | } 127 | ] 128 | }, 129 | { 130 | id: 2, 131 | name: "ByProgrammers Pizza", 132 | rating: 4.8, 133 | categories: [2, 4, 6], 134 | priceRating: expensive, 135 | photo: images.pizza_restaurant, 136 | duration: "15 - 20 min", 137 | location: { 138 | latitude: 1.556306570595712, 139 | longitude: 110.35504616746915, 140 | }, 141 | courier: { 142 | avatar: images.avatar_2, 143 | name: "Jackson" 144 | }, 145 | menu: [ 146 | { 147 | menuId: 4, 148 | name: "Hawaiian Pizza", 149 | photo: images.hawaiian_pizza, 150 | description: "Canadian bacon, homemade pizza crust, pizza sauce", 151 | calories: 250, 152 | price: 15 153 | }, 154 | { 155 | menuId: 5, 156 | name: "Tomato & Basil Pizza", 157 | photo: images.pizza, 158 | description: "Fresh tomatoes, aromatic basil pesto and melted bocconcini", 159 | calories: 250, 160 | price: 20 161 | }, 162 | { 163 | menuId: 6, 164 | name: "Tomato Pasta", 165 | photo: images.tomato_pasta, 166 | description: "Pasta with fresh tomatoes", 167 | calories: 100, 168 | price: 10 169 | }, 170 | { 171 | menuId: 7, 172 | name: "Mediterranean Chopped Salad ", 173 | photo: images.salad, 174 | description: "Finely chopped lettuce, tomatoes, cucumbers", 175 | calories: 100, 176 | price: 10 177 | } 178 | ] 179 | }, 180 | { 181 | id: 3, 182 | name: "ByProgrammers Hotdogs", 183 | rating: 4.8, 184 | categories: [3], 185 | priceRating: expensive, 186 | photo: images.hot_dog_restaurant, 187 | duration: "20 - 25 min", 188 | location: { 189 | latitude: 1.5238753474714375, 190 | longitude: 110.34261833833622, 191 | }, 192 | courier: { 193 | avatar: images.avatar_3, 194 | name: "James" 195 | }, 196 | menu: [ 197 | { 198 | menuId: 8, 199 | name: "Chicago Style Hot Dog", 200 | photo: images.chicago_hot_dog, 201 | description: "Fresh tomatoes, all beef hot dogs", 202 | calories: 100, 203 | price: 20 204 | } 205 | ] 206 | }, 207 | { 208 | id: 4, 209 | name: "ByProgrammers Sushi", 210 | rating: 4.8, 211 | categories: [8], 212 | priceRating: expensive, 213 | photo: images.japanese_restaurant, 214 | duration: "10 - 15 min", 215 | location: { 216 | latitude: 1.5578068150528928, 217 | longitude: 110.35482523764315, 218 | }, 219 | courier: { 220 | avatar: images.avatar_4, 221 | name: "Ahmad" 222 | }, 223 | menu: [ 224 | { 225 | menuId: 9, 226 | name: "Sushi sets", 227 | photo: images.sushi, 228 | description: "Fresh salmon, sushi rice, fresh juicy avocado", 229 | calories: 100, 230 | price: 50 231 | } 232 | ] 233 | }, 234 | { 235 | id: 5, 236 | name: "ByProgrammers Cuisine", 237 | rating: 4.8, 238 | categories: [1, 2], 239 | priceRating: affordable, 240 | photo: images.noodle_shop, 241 | duration: "15 - 20 min", 242 | location: { 243 | latitude: 1.558050496260768, 244 | longitude: 110.34743759630511, 245 | }, 246 | courier: { 247 | avatar: images.avatar_4, 248 | name: "Muthu" 249 | }, 250 | menu: [ 251 | { 252 | menuId: 10, 253 | name: "Kolo Mee", 254 | photo: images.kolo_mee, 255 | description: "Noodles with char siu", 256 | calories: 200, 257 | price: 5 258 | }, 259 | { 260 | menuId: 11, 261 | name: "Sarawak Laksa", 262 | photo: images.sarawak_laksa, 263 | description: "Vermicelli noodles, cooked prawns", 264 | calories: 300, 265 | price: 8 266 | }, 267 | { 268 | menuId: 12, 269 | name: "Nasi Lemak", 270 | photo: images.nasi_lemak, 271 | description: "A traditional Malay rice dish", 272 | calories: 300, 273 | price: 8 274 | }, 275 | { 276 | menuId: 13, 277 | name: "Nasi Briyani with Mutton", 278 | photo: images.nasi_briyani_mutton, 279 | description: "A traditional Indian rice dish with mutton", 280 | calories: 300, 281 | price: 8 282 | }, 283 | 284 | ] 285 | }, 286 | { 287 | 288 | id: 6, 289 | name: "ByProgrammers Dessets", 290 | rating: 4.9, 291 | categories: [9, 10], 292 | priceRating: affordable, 293 | photo: images.kek_lapis_shop, 294 | duration: "35 - 40 min", 295 | location: { 296 | latitude: 1.5573478487252896, 297 | longitude: 110.35568783282145, 298 | }, 299 | courier: { 300 | avatar: images.avatar_1, 301 | name: "Jessie" 302 | }, 303 | menu: [ 304 | { 305 | menuId: 12, 306 | name: "Teh C Peng", 307 | photo: images.teh_c_peng, 308 | description: "Three Layer Teh C Peng", 309 | calories: 100, 310 | price: 2 311 | }, 312 | { 313 | menuId: 13, 314 | name: "ABC Ice Kacang", 315 | photo: images.ice_kacang, 316 | description: "Shaved Ice with red beans", 317 | calories: 100, 318 | price: 3 319 | }, 320 | { 321 | menuId: 14, 322 | name: "Kek Lapis", 323 | photo: images.kek_lapis, 324 | description: "Layer cakes", 325 | calories: 300, 326 | price: 20 327 | } 328 | ] 329 | 330 | } 331 | 332 | 333 | ] 334 | 335 | const [categories, setCategories] = React.useState(categoryData) 336 | const [selectedCategory, setSelectedCategory] = React.useState(null) 337 | const [restaurants, setRestaurants] = React.useState(restaurantData) 338 | const [currentLocation, setCurrentLocation] = React.useState(initialCurrentLocation) 339 | 340 | 341 | function onSelectCategory(category) { 342 | //filter restaurant 343 | let restaurantList = restaurantData.filter(a => a.categories.includes(category.id)) 344 | 345 | setRestaurants(restaurantList) 346 | 347 | setSelectedCategory(category) 348 | } 349 | 350 | function getCategoryNameById(id) { 351 | let category = categories.filter(a => a.id == id) 352 | 353 | if (category.length > 0) 354 | return category[0].name 355 | 356 | return "" 357 | } 358 | 359 | function renderHeader() { 360 | return ( 361 | 362 | 369 | 377 | 378 | 379 | 380 | 390 | {currentLocation.streetName} 391 | 392 | 393 | 394 | 401 | 409 | 410 | 411 | ) 412 | } 413 | 414 | function renderMainCategories() { 415 | const renderItem = ({ item }) => { 416 | return ( 417 | onSelectCategory(item)} 429 | > 430 | 440 | 448 | 449 | 450 | 457 | {item.name} 458 | 459 | 460 | ) 461 | } 462 | 463 | return ( 464 | 465 | Main 466 | Categories 467 | 468 | `${item.id}`} 473 | renderItem={renderItem} 474 | contentContainerStyle={{ paddingVertical: SIZES.padding * 2 }} 475 | /> 476 | 477 | ) 478 | } 479 | 480 | function renderRestaurantList() { 481 | const renderItem = ({ item }) => ( 482 | navigation.navigate("Restaurant", { 485 | item, 486 | currentLocation 487 | })} 488 | > 489 | {/* Image */} 490 | 495 | 504 | 505 | 519 | {item.duration} 520 | 521 | 522 | 523 | {/* Restaurant Info */} 524 | {item.name} 525 | 526 | 532 | {/* Rating */} 533 | 542 | {item.rating} 543 | 544 | {/* Categories */} 545 | 551 | { 552 | item.categories.map((categoryId) => { 553 | return ( 554 | 558 | {getCategoryNameById(categoryId)} 559 | . 560 | 561 | ) 562 | }) 563 | } 564 | 565 | {/* Price */} 566 | { 567 | [1, 2, 3].map((priceRating) => ( 568 | $ 575 | )) 576 | } 577 | 578 | 579 | 580 | ) 581 | 582 | return ( 583 | `${item.id}`} 586 | renderItem={renderItem} 587 | contentContainerStyle={{ 588 | paddingHorizontal: SIZES.padding * 2, 589 | paddingBottom: 30 590 | }} 591 | /> 592 | ) 593 | } 594 | 595 | return ( 596 | 597 | {renderHeader()} 598 | {renderMainCategories()} 599 | {renderRestaurantList()} 600 | 601 | ) 602 | } 603 | 604 | const styles = StyleSheet.create({ 605 | container: { 606 | flex: 1, 607 | backgroundColor: COLORS.lightGray4 608 | }, 609 | shadow: { 610 | shadowColor: "#000", 611 | shadowOffset: { 612 | width: 0, 613 | height: 3, 614 | }, 615 | shadowOpacity: 0.1, 616 | shadowRadius: 3, 617 | elevation: 1, 618 | } 619 | }) 620 | 621 | export default Home; -------------------------------------------------------------------------------- /screens/OrderDelivery.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | View, 4 | Text, 5 | Image, 6 | TouchableOpacity 7 | } from "react-native"; 8 | import MapView, { PROVIDER_GOOGLE, Marker } from 'react-native-maps'; 9 | import MapViewDirections from "react-native-maps-directions"; 10 | 11 | import { COLORS, FONTS, icons, SIZES, GOOGLE_API_KEY } from "../constants" 12 | 13 | const OrderDelivery = ({ route, navigation }) => { 14 | 15 | const mapView = React.useRef() 16 | 17 | const [restaurant, setRestaurant] = React.useState(null) 18 | const [streetName, setStreetName] = React.useState("") 19 | const [fromLocation, setFromLocation] = React.useState(null) 20 | const [toLocation, setToLocation] = React.useState(null) 21 | const [region, setRegion] = React.useState(null) 22 | 23 | const [duration, setDuration] = React.useState(0) 24 | const [isReady, setIsReady] = React.useState(false) 25 | const [angle, setAngle] = React.useState(0) 26 | 27 | React.useEffect(() => { 28 | let { restaurant, currentLocation } = route.params; 29 | 30 | let fromLoc = currentLocation.gps 31 | let toLoc = restaurant.location 32 | let street = currentLocation.streetName 33 | 34 | let mapRegion = { 35 | latitude: (fromLoc.latitude + toLoc.latitude) / 2, 36 | longitude: (fromLoc.longitude + toLoc.longitude) / 2, 37 | latitudeDelta: Math.abs(fromLoc.latitude - toLoc.latitude) * 2, 38 | longitudeDelta: Math.abs(fromLoc.longitude - toLoc.longitude) * 2 39 | } 40 | 41 | setRestaurant(restaurant) 42 | setStreetName(street) 43 | setFromLocation(fromLoc) 44 | setToLocation(toLoc) 45 | setRegion(mapRegion) 46 | 47 | }, []) 48 | 49 | function calculateAngle(coordinates) { 50 | let startLat = coordinates[0]["latitude"] 51 | let startLng = coordinates[0]["longitude"] 52 | let endLat = coordinates[1]["latitude"] 53 | let endLng = coordinates[1]["longitude"] 54 | let dx = endLat - startLat 55 | let dy = endLng - startLng 56 | 57 | return Math.atan2(dy, dx) * 180 / Math.PI 58 | } 59 | 60 | function zoomIn() { 61 | let newRegion = { 62 | latitude: region.latitude, 63 | longitude: region.longitude, 64 | latitudeDelta: region.latitudeDelta / 2, 65 | longitudeDelta: region.longitudeDelta / 2 66 | } 67 | 68 | setRegion(newRegion) 69 | mapView.current.animateToRegion(newRegion, 200) 70 | } 71 | 72 | function zoomOut() { 73 | let newRegion = { 74 | latitude: region.latitude, 75 | longitude: region.longitude, 76 | latitudeDelta: region.latitudeDelta * 2, 77 | longitudeDelta: region.longitudeDelta * 2 78 | } 79 | 80 | setRegion(newRegion) 81 | mapView.current.animateToRegion(newRegion, 200) 82 | } 83 | 84 | function renderMap() { 85 | const destinationMarker = () => ( 86 | 89 | 99 | 109 | 117 | 118 | 119 | 120 | ) 121 | 122 | const carIcon = () => ( 123 | 129 | 136 | 137 | ) 138 | 139 | return ( 140 | 141 | 147 | { 155 | setDuration(result.duration) 156 | 157 | if (!isReady) { 158 | // Fit route into maps 159 | mapView.current.fitToCoordinates(result.coordinates, { 160 | edgePadding: { 161 | right: (SIZES.width / 20), 162 | bottom: (SIZES.height / 4), 163 | left: (SIZES.width / 20), 164 | top: (SIZES.height / 8) 165 | } 166 | }) 167 | 168 | // Reposition the car 169 | let nextLoc = { 170 | latitude: result.coordinates[0]["latitude"], 171 | longitude: result.coordinates[0]["longitude"] 172 | } 173 | 174 | if (result.coordinates.length >= 2) { 175 | let angle = calculateAngle(result.coordinates) 176 | setAngle(angle) 177 | } 178 | 179 | setFromLocation(nextLoc) 180 | setIsReady(true) 181 | } 182 | }} 183 | /> 184 | {destinationMarker()} 185 | {carIcon()} 186 | 187 | 188 | ) 189 | } 190 | 191 | function renderDestinationHeader() { 192 | return ( 193 | 204 | 215 | 223 | 224 | 225 | {streetName} 226 | 227 | 228 | {Math.ceil(duration)} mins 229 | 230 | 231 | ) 232 | } 233 | 234 | function renderDeliveryInfo() { 235 | return ( 236 | 246 | 255 | 256 | {/* Avatar */} 257 | 265 | 266 | 267 | {/* Name & Rating */} 268 | 269 | {restaurant?.courier.name} 270 | 271 | 275 | {restaurant?.rating} 276 | 277 | 278 | 279 | {/* Restaurant */} 280 | {restaurant?.name} 281 | 282 | 283 | 284 | {/* Buttons */} 285 | 292 | navigation.navigate("Home")} 303 | > 304 | Call 305 | 306 | 307 | navigation.goBack()} 317 | > 318 | Cancel 319 | 320 | 321 | 322 | 323 | 324 | ) 325 | } 326 | 327 | function renderButtons() { 328 | return ( 329 | 339 | {/* Zoom In */} 340 | zoomIn()} 350 | > 351 | + 352 | 353 | 354 | {/* Zoom Out */} 355 | zoomOut()} 365 | > 366 | - 367 | 368 | 369 | 370 | ) 371 | } 372 | 373 | return ( 374 | 375 | {renderMap()} 376 | {renderDestinationHeader()} 377 | {renderDeliveryInfo()} 378 | {renderButtons()} 379 | 380 | ) 381 | } 382 | 383 | export default OrderDelivery; -------------------------------------------------------------------------------- /screens/Restaurant.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | StyleSheet, 4 | SafeAreaView, 5 | View, 6 | Text, 7 | TouchableOpacity, 8 | Image, 9 | Animated 10 | } from "react-native"; 11 | import { isIphoneX } from 'react-native-iphone-x-helper' 12 | 13 | import { icons, COLORS, SIZES, FONTS } from '../constants' 14 | 15 | const Restaurant = ({ route, navigation }) => { 16 | 17 | const scrollX = new Animated.Value(0); 18 | const [restaurant, setRestaurant] = React.useState(null); 19 | const [currentLocation, setCurrentLocation] = React.useState(null); 20 | const [orderItems, setOrderItems] = React.useState([]); 21 | 22 | React.useEffect(() => { 23 | let { item, currentLocation } = route.params; 24 | 25 | setRestaurant(item) 26 | setCurrentLocation(currentLocation) 27 | }) 28 | 29 | function editOrder(action, menuId, price) { 30 | let orderList = orderItems.slice() 31 | let item = orderList.filter(a => a.menuId == menuId) 32 | 33 | if (action == "+") { 34 | if (item.length > 0) { 35 | let newQty = item[0].qty + 1 36 | item[0].qty = newQty 37 | item[0].total = item[0].qty * price 38 | } else { 39 | const newItem = { 40 | menuId: menuId, 41 | qty: 1, 42 | price: price, 43 | total: price 44 | } 45 | orderList.push(newItem) 46 | } 47 | 48 | setOrderItems(orderList) 49 | } else { 50 | if (item.length > 0) { 51 | if (item[0]?.qty > 0) { 52 | let newQty = item[0].qty - 1 53 | item[0].qty = newQty 54 | item[0].total = newQty * price 55 | } 56 | } 57 | 58 | setOrderItems(orderList) 59 | } 60 | } 61 | 62 | function getOrderQty(menuId) { 63 | let orderItem = orderItems.filter(a => a.menuId == menuId) 64 | 65 | if (orderItem.length > 0) { 66 | return orderItem[0].qty 67 | } 68 | 69 | return 0 70 | } 71 | 72 | function getBasketItemCount() { 73 | let itemCount = orderItems.reduce((a, b) => a + (b.qty || 0), 0) 74 | 75 | return itemCount 76 | } 77 | 78 | function sumOrder() { 79 | let total = orderItems.reduce((a, b) => a + (b.total || 0), 0) 80 | 81 | return total.toFixed(2) 82 | } 83 | 84 | function renderHeader() { 85 | return ( 86 | 87 | navigation.goBack()} 94 | > 95 | 103 | 104 | 105 | {/* Restaurant Name Section */} 106 | 113 | 123 | {restaurant?.name} 124 | 125 | 126 | 127 | 134 | 142 | 143 | 144 | ) 145 | } 146 | 147 | function renderFoodInfo() { 148 | return ( 149 | 159 | { 160 | restaurant?.menu.map((item, index) => ( 161 | 165 | 166 | {/* Food Image */} 167 | 175 | 176 | {/* Quantity */} 177 | 187 | editOrder("-", item.menuId, item.price)} 197 | > 198 | - 199 | 200 | 201 | 209 | {getOrderQty(item.menuId)} 210 | 211 | 212 | editOrder("+", item.menuId, item.price)} 222 | > 223 | + 224 | 225 | 226 | 227 | 228 | {/* Name & Description */} 229 | 237 | {item.name} - {item.price.toFixed(2)} 238 | {item.description} 239 | 240 | 241 | {/* Calories */} 242 | 248 | 256 | 257 | {item.calories.toFixed(2)} cal 260 | 261 | 262 | )) 263 | } 264 | 265 | ) 266 | } 267 | 268 | function renderDots() { 269 | 270 | const dotPosition = Animated.divide(scrollX, SIZES.width) 271 | 272 | return ( 273 | 274 | 282 | {restaurant?.menu.map((item, index) => { 283 | 284 | const opacity = dotPosition.interpolate({ 285 | inputRange: [index - 1, index, index + 1], 286 | outputRange: [0.3, 1, 0.3], 287 | extrapolate: "clamp" 288 | }) 289 | 290 | const dotSize = dotPosition.interpolate({ 291 | inputRange: [index - 1, index, index + 1], 292 | outputRange: [SIZES.base * 0.8, 10, SIZES.base * 0.8], 293 | extrapolate: "clamp" 294 | }) 295 | 296 | const dotColor = dotPosition.interpolate({ 297 | inputRange: [index - 1, index, index + 1], 298 | outputRange: [COLORS.darkgray, COLORS.primary, COLORS.darkgray], 299 | extrapolate: "clamp" 300 | }) 301 | 302 | return ( 303 | 314 | ) 315 | })} 316 | 317 | 318 | ) 319 | } 320 | 321 | function renderOrder() { 322 | return ( 323 | 324 | { 325 | renderDots() 326 | } 327 | 334 | 344 | {getBasketItemCount()} items in Cart 345 | ${sumOrder()} 346 | 347 | 348 | 356 | 357 | 366 | Location 367 | 368 | 369 | 370 | 379 | 8888 380 | 381 | 382 | 383 | {/* Order Button */} 384 | 391 | navigation.navigate("OrderDelivery", { 400 | restaurant: restaurant, 401 | currentLocation: currentLocation 402 | })} 403 | > 404 | Order 405 | 406 | 407 | 408 | 409 | {isIphoneX() && 410 | 420 | 421 | } 422 | 423 | ) 424 | } 425 | 426 | return ( 427 | 428 | {renderHeader()} 429 | {renderFoodInfo()} 430 | {renderOrder()} 431 | 432 | ) 433 | } 434 | 435 | const styles = StyleSheet.create({ 436 | container: { 437 | flex: 1, 438 | backgroundColor: COLORS.lightGray2 439 | } 440 | }) 441 | 442 | export default Restaurant; -------------------------------------------------------------------------------- /screens/index.js: -------------------------------------------------------------------------------- 1 | import Home from './Home' 2 | import Restaurant from './Restaurant' 3 | import OrderDelivery from './OrderDelivery' 4 | 5 | export { 6 | Home, 7 | Restaurant, 8 | OrderDelivery 9 | } --------------------------------------------------------------------------------