류윤주 류윤주 11-07
241107 라스트 커밋
@d833fb51598f795d6ef4ae9c0256e7277e48ba3f
.bundle/config
--- .bundle/config
+++ .bundle/config
@@ -1,2 +1,2 @@
-BUNDLE_PATH: "vendor/bundle"
-BUNDLE_FORCE_RUBY_PLATFORM: 1
+BUNDLE_PATH: "vendor/bundle"
+BUNDLE_FORCE_RUBY_PLATFORM: 1
.eslintrc.js
--- .eslintrc.js
+++ .eslintrc.js
@@ -1,12 +1,4 @@
-module.exports = {
-  root: true,
-  extends: ['plugin:prettier/recommended', '@react-native'],
-  rules: {
-    'prettier/prettier': [
-      'error',
-      {
-        endOfLine: 'auto',
-      },
-    ],
-  },
-};
+module.exports = {
+  root: true,
+  extends: '@react-native',
+};
.gitignore
--- .gitignore
+++ .gitignore
@@ -1,74 +1,74 @@
-# OSX
-#
-.DS_Store
-
-# Xcode
-#
-build/
-*.pbxuser
-!default.pbxuser
-*.mode1v3
-!default.mode1v3
-*.mode2v3
-!default.mode2v3
-*.perspectivev3
-!default.perspectivev3
-xcuserdata
-*.xccheckout
-*.moved-aside
-DerivedData
-*.hmap
-*.ipa
-*.xcuserstate
-**/.xcode.env.local
-
-# Android/IntelliJ
-#
-build/
-.idea
-.gradle
-local.properties
-*.iml
-*.hprof
-.cxx/
-*.keystore
-!debug.keystore
-
-# node.js
-#
-node_modules/
-npm-debug.log
-yarn-error.log
-
-# fastlane
-#
-# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
-# screenshots whenever they are needed.
-# For more information about the recommended setup visit:
-# https://docs.fastlane.tools/best-practices/source-control/
-
-**/fastlane/report.xml
-**/fastlane/Preview.html
-**/fastlane/screenshots
-**/fastlane/test_output
-
-# Bundle artifact
-*.jsbundle
-
-# Ruby / CocoaPods
-**/Pods/
-/vendor/bundle/
-
-# Temporary files created by Metro to check the health of the file watcher
-.metro-health-check*
-
-# testing
-/coverage
-
-# Yarn
-.yarn/*
-!.yarn/patches
-!.yarn/plugins
-!.yarn/releases
-!.yarn/sdks
-!.yarn/versions
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+**/.xcode.env.local
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+*.hprof
+.cxx/
+*.keystore
+!debug.keystore
+
+# node.js
+#
+node_modules/
+npm-debug.log
+yarn-error.log
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/
+
+**/fastlane/report.xml
+**/fastlane/Preview.html
+**/fastlane/screenshots
+**/fastlane/test_output
+
+# Bundle artifact
+*.jsbundle
+
+# Ruby / CocoaPods
+**/Pods/
+/vendor/bundle/
+
+# Temporary files created by Metro to check the health of the file watcher
+.metro-health-check*
+
+# testing
+/coverage
+
+# Yarn
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
.prettierrc.js
--- .prettierrc.js
+++ .prettierrc.js
@@ -1,8 +1,7 @@
-module.exports = {
-  arrowParens: 'avoid',
-  bracketSameLine: true,
-  bracketSpacing: false,
-  singleQuote: true,
-  trailingComma: 'all',
-  endOfLine: 'auto',
-};
+module.exports = {
+  arrowParens: 'avoid',
+  bracketSameLine: true,
+  bracketSpacing: false,
+  singleQuote: true,
+  trailingComma: 'all',
+};
.watchmanconfig
--- .watchmanconfig
+++ .watchmanconfig
@@ -1,1 +1,1 @@
-{}
+{}
App.js
--- App.js
+++ App.js
@@ -1,7 +1,8 @@
-
-import React from 'react';
+import React, { useContext } from 'react';
 import { NavigationContainer } from '@react-navigation/native';
 import { createStackNavigator } from '@react-navigation/stack';
+import { AuthProvider, AuthContext } from './src/context/AuthContext';
+import { LocationProvider } from './src/context/LocationProvider';
 
 import LoginScreen from './src/screen/LoginScreen';
 import SelectionScreen from './src/screen/SelectionScreen';
@@ -9,20 +10,46 @@
 import GpsScreen from './src/screen/GpsScreen';
 import AnalysisScreen from './src/screen/AnalysisScreen';
 import AgreementScreen from './src/screen/AgreementScreen';
+import History from './src/screen/History';
 
-const Stack = createStackNavigator();
+const AuthStack = createStackNavigator();
+const AppStack = createStackNavigator();
 
-export default function App() {
+const AuthNavigator = () => (
+  <AuthStack.Navigator>
+    <AuthStack.Screen name="Login" component={LoginScreen} options={{ headerShown: false }} />
+    <AuthStack.Screen name="Agreement" component={AgreementScreen} options={{ title: '회원가입' }} />
+  </AuthStack.Navigator>
+);
+
+const MainNavigator = () => (
+  <AppStack.Navigator>
+    <AppStack.Screen name="Selection" component={SelectionScreen} options={{ title: '운행 선택' }} />
+    <AppStack.Screen name="Camera" component={CameraScreen} options={{ title: '카메라 분석' }} />
+    <AppStack.Screen name="Gps" component={GpsScreen} options={{ title: '운행' }} />
+    <AppStack.Screen name="Analysis" component={AnalysisScreen} options={{ title: '분석결과' }} />
+    <AppStack.Screen name="History" component={History} options={{ title: '히스토리' }} />
+  </AppStack.Navigator>
+);
+
+const AppContent = () => {
+  const { isLoggedIn, loading } = useContext(AuthContext);
+
+  if (loading) {
+    return null;
+  }
+
   return (
     <NavigationContainer>
-      <Stack.Navigator initialRouteName="Login">
-        <Stack.Screen name="Login" component={LoginScreen} />
-        <Stack.Screen name="Selection" component={SelectionScreen} />
-        <Stack.Screen name="Camera" component={CameraScreen} />
-        <Stack.Screen name="Gps" component={GpsScreen} />
-        <Stack.Screen name="Analysis" component={AnalysisScreen} />
-        <Stack.Screen name="Agreement" component={AgreementScreen} />
-      </Stack.Navigator>
+      {isLoggedIn ? <MainNavigator /> : <AuthNavigator />}
     </NavigationContainer>
   );
-}
(파일 끝에 줄바꿈 문자 없음)
+};
+
+export default () => (
+  <LocationProvider>
+    <AuthProvider>
+      <AppContent />
+    </AuthProvider>
+  </LocationProvider>
+);
Gemfile
--- Gemfile
+++ Gemfile
@@ -1,9 +1,9 @@
-source 'https://rubygems.org'
-
-# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
-ruby ">= 2.6.10"
-
-# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper
-# bound in the template on Cocoapods with next React Native release.
-gem 'cocoapods', '>= 1.13', '< 1.15'
-gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
+source 'https://rubygems.org'
+
+# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
+ruby ">= 2.6.10"
+
+# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper
+# bound in the template on Cocoapods with next React Native release.
+gem 'cocoapods', '>= 1.13', '< 1.15'
+gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
 
Gemfile.lock (added)
+++ Gemfile.lock
@@ -0,0 +1,105 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    CFPropertyList (3.0.7)
+      base64
+      nkf
+      rexml
+    activesupport (7.0.8.4)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 1.6, < 2)
+      minitest (>= 5.1)
+      tzinfo (~> 2.0)
+    addressable (2.8.7)
+      public_suffix (>= 2.0.2, < 7.0)
+    algoliasearch (1.27.5)
+      httpclient (~> 2.8, >= 2.8.3)
+      json (>= 1.5.1)
+    atomos (0.1.3)
+    base64 (0.2.0)
+    claide (1.1.0)
+    cocoapods (1.14.3)
+      addressable (~> 2.8)
+      claide (>= 1.0.2, < 2.0)
+      cocoapods-core (= 1.14.3)
+      cocoapods-deintegrate (>= 1.0.3, < 2.0)
+      cocoapods-downloader (>= 2.1, < 3.0)
+      cocoapods-plugins (>= 1.0.0, < 2.0)
+      cocoapods-search (>= 1.0.0, < 2.0)
+      cocoapods-trunk (>= 1.6.0, < 2.0)
+      cocoapods-try (>= 1.1.0, < 2.0)
+      colored2 (~> 3.1)
+      escape (~> 0.0.4)
+      fourflusher (>= 2.3.0, < 3.0)
+      gh_inspector (~> 1.0)
+      molinillo (~> 0.8.0)
+      nap (~> 1.0)
+      ruby-macho (>= 2.3.0, < 3.0)
+      xcodeproj (>= 1.23.0, < 2.0)
+    cocoapods-core (1.14.3)
+      activesupport (>= 5.0, < 8)
+      addressable (~> 2.8)
+      algoliasearch (~> 1.0)
+      concurrent-ruby (~> 1.1)
+      fuzzy_match (~> 2.0.4)
+      nap (~> 1.0)
+      netrc (~> 0.11)
+      public_suffix (~> 4.0)
+      typhoeus (~> 1.0)
+    cocoapods-deintegrate (1.0.5)
+    cocoapods-downloader (2.1)
+    cocoapods-plugins (1.0.0)
+      nap
+    cocoapods-search (1.0.1)
+    cocoapods-trunk (1.6.0)
+      nap (>= 0.8, < 2.0)
+      netrc (~> 0.11)
+    cocoapods-try (1.2.0)
+    colored2 (3.1.2)
+    concurrent-ruby (1.3.3)
+    escape (0.0.4)
+    ethon (0.16.0)
+      ffi (>= 1.15.0)
+    ffi (1.17.0)
+    fourflusher (2.3.1)
+    fuzzy_match (2.0.4)
+    gh_inspector (1.1.3)
+    httpclient (2.8.3)
+    i18n (1.14.5)
+      concurrent-ruby (~> 1.0)
+    json (2.7.2)
+    minitest (5.24.1)
+    molinillo (0.8.0)
+    nanaimo (0.3.0)
+    nap (1.1.0)
+    netrc (0.11.0)
+    nkf (0.2.0)
+    public_suffix (4.0.7)
+    rexml (3.2.9)
+      strscan
+    ruby-macho (2.5.1)
+    strscan (3.1.0)
+    typhoeus (1.4.1)
+      ethon (>= 0.9.0)
+    tzinfo (2.0.6)
+      concurrent-ruby (~> 1.0)
+    xcodeproj (1.24.0)
+      CFPropertyList (>= 2.3.3, < 4.0)
+      atomos (~> 0.1.3)
+      claide (>= 1.0.2, < 2.0)
+      colored2 (~> 3.1)
+      nanaimo (~> 0.3.0)
+      rexml (~> 3.2.4)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  activesupport (>= 6.1.7.5, < 7.1.0)
+  cocoapods (>= 1.13, < 1.15)
+
+RUBY VERSION
+   ruby 3.3.4p94
+
+BUNDLED WITH
+   2.5.11
README.md
--- README.md
+++ README.md
@@ -1,79 +1,79 @@
-This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
-
-# Getting Started
-
->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
-
-## Step 1: Start the Metro Server
-
-First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
-
-To start Metro, run the following command from the _root_ of your React Native project:
-
-```bash
-# using npm
-npm start
-
-# OR using Yarn
-yarn start
-```
-
-## Step 2: Start your Application
-
-Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
-
-### For Android
-
-```bash
-# using npm
-npm run android
-
-# OR using Yarn
-yarn android
-```
-
-### For iOS
-
-```bash
-# using npm
-npm run ios
-
-# OR using Yarn
-yarn ios
-```
-
-If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
-
-This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
-
-## Step 3: Modifying your App
-
-Now that you have successfully run the app, let's modify it.
-
-1. Open `App.tsx` in your text editor of choice and edit some lines.
-2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
-
-   For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
-
-## Congratulations! :tada:
-
-You've successfully run and modified your React Native App. :partying_face:
-
-### Now what?
-
-- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
-- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
-
-# Troubleshooting
-
-If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
-
-# Learn More
-
-To learn more about React Native, take a look at the following resources:
-
-- [React Native Website](https://reactnative.dev) - learn more about React Native.
-- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
-- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
-- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
-- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
+This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
+
+# Getting Started
+
+>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
+
+## Step 1: Start the Metro Server
+
+First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
+
+To start Metro, run the following command from the _root_ of your React Native project:
+
+```bash
+# using npm
+npm start
+
+# OR using Yarn
+yarn start
+```
+
+## Step 2: Start your Application
+
+Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
+
+### For Android
+
+```bash
+# using npm
+npm run android
+
+# OR using Yarn
+yarn android
+```
+
+### For iOS
+
+```bash
+# using npm
+npm run ios
+
+# OR using Yarn
+yarn ios
+```
+
+If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
+
+This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
+
+## Step 3: Modifying your App
+
+Now that you have successfully run the app, let's modify it.
+
+1. Open `App.tsx` in your text editor of choice and edit some lines.
+2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
+
+   For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
+
+## Congratulations! :tada:
+
+You've successfully run and modified your React Native App. :partying_face:
+
+### Now what?
+
+- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
+- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
+
+# Troubleshooting
+
+If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
+
+# Learn More
+
+To learn more about React Native, take a look at the following resources:
+
+- [React Native Website](https://reactnative.dev) - learn more about React Native.
+- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
+- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
+- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
+- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
__tests__/App.test.tsx
--- __tests__/App.test.tsx
+++ __tests__/App.test.tsx
@@ -1,17 +1,17 @@
-/**
- * @format
- */
-
-import 'react-native';
-import React from 'react';
-import App from '../App';
-
-// Note: import explicitly to use the types shipped with jest.
-import {it} from '@jest/globals';
-
-// Note: test renderer must be required after react-native.
-import renderer from 'react-test-renderer';
-
-it('renders correctly', () => {
-  renderer.create(<App />);
-});
+/**
+ * @format
+ */
+
+import 'react-native';
+import React from 'react';
+import App from '../App';
+
+// Note: import explicitly to use the types shipped with jest.
+import {it} from '@jest/globals';
+
+// Note: test renderer must be required after react-native.
+import renderer from 'react-test-renderer';
+
+it('renders correctly', () => {
+  renderer.create(<App />);
+});
android/app/build.gradle
--- android/app/build.gradle
+++ android/app/build.gradle
@@ -1,119 +1,118 @@
-apply plugin: "com.android.application"
-apply plugin: "org.jetbrains.kotlin.android"
-apply plugin: "com.facebook.react"
-
-/**
- * This is the configuration block to customize your React Native Android app.
- * By default you don't need to apply any configuration, just uncomment the lines you need.
- */
-react {
-    /* Folders */
-    //   The root of your project, i.e. where "package.json" lives. Default is '..'
-    // root = file("../")
-    //   The folder where the react-native NPM package is. Default is ../node_modules/react-native
-    // reactNativeDir = file("../node_modules/react-native")
-    //   The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
-    // codegenDir = file("../node_modules/@react-native/codegen")
-    //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
-    // cliFile = file("../node_modules/react-native/cli.js")
-
-    /* Variants */
-    //   The list of variants to that are debuggable. For those we're going to
-    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
-    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
-    // debuggableVariants = ["liteDebug", "prodDebug"]
-
-    /* Bundling */
-    //   A list containing the node command and its flags. Default is just 'node'.
-    // nodeExecutableAndArgs = ["node"]
-    //
-    //   The command to run when bundling. By default is 'bundle'
-    // bundleCommand = "ram-bundle"
-    //
-    //   The path to the CLI configuration file. Default is empty.
-    // bundleConfig = file(../rn-cli.config.js)
-    //
-    //   The name of the generated asset file containing your JS bundle
-    // bundleAssetName = "MyApplication.android.bundle"
-    //
-    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
-    // entryFile = file("../js/MyApplication.android.js")
-    //
-    //   A list of extra flags to pass to the 'bundle' commands.
-    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
-    // extraPackagerArgs = []
-
-    /* Hermes Commands */
-    //   The hermes compiler command to run. By default it is 'hermesc'
-    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
-    //
-    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
-    // hermesFlags = ["-O", "-output-source-map"]
-}
-
-/**
- * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
- */
-def enableProguardInReleaseBuilds = false
-
-/**
- * The preferred build flavor of JavaScriptCore (JSC)
- *
- * For example, to use the international variant, you can use:
- * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
- *
- * The international variant includes ICU i18n library and necessary data
- * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
- * give correct results when using with locales other than en-US. Note that
- * this variant is about 6MiB larger per architecture than default.
- */
-def jscFlavor = 'org.webkit:android-jsc:+'
-
-android {
-    ndkVersion rootProject.ext.ndkVersion
-    buildToolsVersion rootProject.ext.buildToolsVersion
-    compileSdk rootProject.ext.compileSdkVersion
-
-    namespace "com.send_location_ta"
-    defaultConfig {
-        applicationId "com.send_location_ta"
-        minSdkVersion rootProject.ext.minSdkVersion
-        targetSdkVersion rootProject.ext.targetSdkVersion
-        versionCode 1
-        versionName "1.0"
-    }
-    signingConfigs {
-        debug {
-            storeFile file('debug.keystore')
-            storePassword 'android'
-            keyAlias 'androiddebugkey'
-            keyPassword 'android'
-        }
-    }
-    buildTypes {
-        debug {
-            signingConfig signingConfigs.debug
-        }
-        release {
-            // Caution! In production, you need to generate your own keystore file.
-            // see https://reactnative.dev/docs/signed-apk-android.
-            signingConfig signingConfigs.debug
-            minifyEnabled enableProguardInReleaseBuilds
-            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
-        }
-    }
-}
-
-dependencies {
-    // The version of react-native is set by the React Native Gradle Plugin
-    implementation("com.facebook.react:react-android")
-
-    if (hermesEnabled.toBoolean()) {
-        implementation("com.facebook.react:hermes-android")
-    } else {
-        implementation jscFlavor
-    }
-}
-
-apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
-apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
+apply plugin: "com.android.application"
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: "com.facebook.react"
+
+/**
+ * This is the configuration block to customize your React Native Android app.
+ * By default you don't need to apply any configuration, just uncomment the lines you need.
+ */
+react {
+    /* Folders */
+    //   The root of your project, i.e. where "package.json" lives. Default is '..'
+    // root = file("../")
+    //   The folder where the react-native NPM package is. Default is ../node_modules/react-native
+    // reactNativeDir = file("../node_modules/react-native")
+    //   The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
+    // codegenDir = file("../node_modules/@react-native/codegen")
+    //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
+    // cliFile = file("../node_modules/react-native/cli.js")
+
+    /* Variants */
+    //   The list of variants to that are debuggable. For those we're going to
+    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
+    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
+    // debuggableVariants = ["liteDebug", "prodDebug"]
+
+    /* Bundling */
+    //   A list containing the node command and its flags. Default is just 'node'.
+    // nodeExecutableAndArgs = ["node"]
+    //
+    //   The command to run when bundling. By default is 'bundle'
+    // bundleCommand = "ram-bundle"
+    //
+    //   The path to the CLI configuration file. Default is empty.
+    // bundleConfig = file(../rn-cli.config.js)
+    //
+    //   The name of the generated asset file containing your JS bundle
+    // bundleAssetName = "MyApplication.android.bundle"
+    //
+    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
+    // entryFile = file("../js/MyApplication.android.js")
+    //
+    //   A list of extra flags to pass to the 'bundle' commands.
+    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
+    // extraPackagerArgs = []
+
+    /* Hermes Commands */
+    //   The hermes compiler command to run. By default it is 'hermesc'
+    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
+    //
+    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
+    // hermesFlags = ["-O", "-output-source-map"]
+}
+
+/**
+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
+ */
+def enableProguardInReleaseBuilds = false
+
+/**
+ * The preferred build flavor of JavaScriptCore (JSC)
+ *
+ * For example, to use the international variant, you can use:
+ * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
+ *
+ * The international variant includes ICU i18n library and necessary data
+ * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
+ * give correct results when using with locales other than en-US. Note that
+ * this variant is about 6MiB larger per architecture than default.
+ */
+def jscFlavor = 'org.webkit:android-jsc:+'
+
+android {
+    ndkVersion rootProject.ext.ndkVersion
+    buildToolsVersion rootProject.ext.buildToolsVersion
+    compileSdk rootProject.ext.compileSdkVersion
+
+    namespace "com.kic"
+    defaultConfig {
+        applicationId "com.kic"
+        minSdkVersion rootProject.ext.minSdkVersion
+        targetSdkVersion rootProject.ext.targetSdkVersion
+        versionCode 1
+        versionName "1.0"
+    }
+    signingConfigs {
+        debug {
+            storeFile file('debug.keystore')
+            storePassword 'android'
+            keyAlias 'androiddebugkey'
+            keyPassword 'android'
+        }
+    }
+    buildTypes {
+        debug {
+            signingConfig signingConfigs.debug
+        }
+        release {
+            // Caution! In production, you need to generate your own keystore file.
+            // see https://reactnative.dev/docs/signed-apk-android.
+            signingConfig signingConfigs.debug
+            minifyEnabled enableProguardInReleaseBuilds
+            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
+        }
+    }
+}
+
+dependencies {
+    // The version of react-native is set by the React Native Gradle Plugin
+    implementation("com.facebook.react:react-android")
+
+    if (hermesEnabled.toBoolean()) {
+        implementation("com.facebook.react:hermes-android")
+    } else {
+        implementation jscFlavor
+    }
+}
+
+apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
android/app/proguard-rules.pro
--- android/app/proguard-rules.pro
+++ android/app/proguard-rules.pro
@@ -1,10 +1,10 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
android/app/src/debug/AndroidManifest.xml
--- android/app/src/debug/AndroidManifest.xml
+++ android/app/src/debug/AndroidManifest.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
-
-    <application
-        android:usesCleartextTraffic="true"
-        tools:targetApi="28"
-        tools:ignore="GoogleAppIndexingWarning"/>
-</manifest>
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <application
+        android:usesCleartextTraffic="true"
+        tools:targetApi="28"
+        tools:ignore="GoogleAppIndexingWarning"/>
+</manifest>
android/app/src/main/AndroidManifest.xml
--- android/app/src/main/AndroidManifest.xml
+++ android/app/src/main/AndroidManifest.xml
@@ -1,38 +1,25 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-package="com.send_location_ta">
-
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.CAMERA" />
-    <uses-permission android:name="android.permission.RECORD_AUDIO" />
-    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
-    <uses-permission android:name="android.permission.WAKE_LOCK" />
-    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
-    
-
-    <application
-      android:name=".MainApplication"
-      android:label="@string/app_name"
-      android:icon="@mipmap/ic_launcher"
-      android:roundIcon="@mipmap/ic_launcher_round"
-      android:allowBackup="false"
-      android:theme="@style/AppTheme"
-      android:exported="true"
-      android:requestLegacyExternalStorage="true"
-      android:usesCleartextTraffic="true">
-      <activity
-        android:name=".MainActivity"
-        android:label="@string/app_name"
-        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
-        android:launchMode="singleTask"
-        android:windowSoftInputMode="adjustResize"
-        android:exported="true">
-        <intent-filter>
-            <action android:name="android.intent.action.MAIN" />
-            <category android:name="android.intent.category.LAUNCHER" />
-        </intent-filter>
-      </activity>
-        <service android:name="com.asterinet.react.bgactions.RNBackgroundActionsTask" android:foregroundServiceType="shortService"/>
-    </application>
-</manifest>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <uses-permission android:name="android.permission.INTERNET" />
+
+    <application
+      android:name=".MainApplication"
+      android:label="@string/app_name"
+      android:icon="@mipmap/ic_launcher"
+      android:roundIcon="@mipmap/ic_launcher_round"
+      android:allowBackup="false"
+      android:theme="@style/AppTheme">
+      <activity
+        android:name=".MainActivity"
+        android:label="@string/app_name"
+        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
+        android:launchMode="singleTask"
+        android:windowSoftInputMode="adjustResize"
+        android:exported="true">
+        <intent-filter>
+            <action android:name="android.intent.action.MAIN" />
+            <category android:name="android.intent.category.LAUNCHER" />
+        </intent-filter>
+      </activity>
+    </application>
+</manifest>
 
android/app/src/main/java/com/kic/MainActivity.kt (added)
+++ android/app/src/main/java/com/kic/MainActivity.kt
@@ -0,0 +1,22 @@
+package com.kic
+
+import com.facebook.react.ReactActivity
+import com.facebook.react.ReactActivityDelegate
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
+import com.facebook.react.defaults.DefaultReactActivityDelegate
+
+class MainActivity : ReactActivity() {
+
+  /**
+   * Returns the name of the main component registered from JavaScript. This is used to schedule
+   * rendering of the component.
+   */
+  override fun getMainComponentName(): String = "kic"
+
+  /**
+   * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
+   * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
+   */
+  override fun createReactActivityDelegate(): ReactActivityDelegate =
+      DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
+}
 
android/app/src/main/java/com/kic/MainApplication.kt (added)
+++ android/app/src/main/java/com/kic/MainApplication.kt
@@ -0,0 +1,43 @@
+package com.kic
+
+import android.app.Application
+import com.facebook.react.PackageList
+import com.facebook.react.ReactApplication
+import com.facebook.react.ReactHost
+import com.facebook.react.ReactNativeHost
+import com.facebook.react.ReactPackage
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
+import com.facebook.react.defaults.DefaultReactNativeHost
+import com.facebook.soloader.SoLoader
+
+class MainApplication : Application(), ReactApplication {
+
+  override val reactNativeHost: ReactNativeHost =
+      object : DefaultReactNativeHost(this) {
+        override fun getPackages(): List<ReactPackage> =
+            PackageList(this).packages.apply {
+              // Packages that cannot be autolinked yet can be added manually here, for example:
+              // add(MyReactNativePackage())
+            }
+
+        override fun getJSMainModuleName(): String = "index"
+
+        override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
+
+        override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+        override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
+      }
+
+  override val reactHost: ReactHost
+    get() = getDefaultReactHost(applicationContext, reactNativeHost)
+
+  override fun onCreate() {
+    super.onCreate()
+    SoLoader.init(this, false)
+    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+      // If you opted-in for the New Architecture, we load the native entry point for this app.
+      load()
+    }
+  }
+}
android/app/src/main/res/drawable/rn_edit_text_material.xml
--- android/app/src/main/res/drawable/rn_edit_text_material.xml
+++ android/app/src/main/res/drawable/rn_edit_text_material.xml
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-       android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
-       android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
-       android:insetTop="@dimen/abc_edit_text_inset_top_material"
-       android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"
-       >
-
-    <selector>
-        <!--
-          This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
-          The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
-          NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
-
-          <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
-
-          For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
-        -->
-        <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
-        <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
-    </selector>
-
-</inset>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+       android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
+       android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
+       android:insetTop="@dimen/abc_edit_text_inset_top_material"
+       android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"
+       >
+
+    <selector>
+        <!--
+          This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
+          The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
+          NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
+
+          <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
+
+          For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
+        -->
+        <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
+        <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
+    </selector>
+
+</inset>
android/app/src/main/res/values/strings.xml
--- android/app/src/main/res/values/strings.xml
+++ android/app/src/main/res/values/strings.xml
@@ -1,3 +1,3 @@
-<resources>
-    <string name="app_name">Send_Location_TA</string>
-</resources>
+<resources>
+    <string name="app_name">kic</string>
+</resources>
android/app/src/main/res/values/styles.xml
--- android/app/src/main/res/values/styles.xml
+++ android/app/src/main/res/values/styles.xml
@@ -1,9 +1,9 @@
-<resources>
-
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
-        <!-- Customize your theme here. -->
-        <item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
-    </style>
-
-</resources>
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
+        <!-- Customize your theme here. -->
+        <item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
+    </style>
+
+</resources>
android/build.gradle
--- android/build.gradle
+++ android/build.gradle
@@ -1,22 +1,21 @@
-buildscript {
-    ext {
-        buildToolsVersion = "34.0.0"
-        minSdkVersion = 23
-        compileSdkVersion = 34
-        targetSdkVersion = 34
-        ndkVersion = "26.1.10909125"
-        kotlinVersion = "1.9.22"
-        playServicesLocationVersion = "21.0.1"
-    }
-    repositories {
-        google()
-        mavenCentral()
-    }
-    dependencies {
-        classpath("com.android.tools.build:gradle:7.3.1")
-        classpath("com.facebook.react:react-native-gradle-plugin")
-        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
-    }
-}
-
-apply plugin: "com.facebook.react.rootproject"
+buildscript {
+    ext {
+        buildToolsVersion = "34.0.0"
+        minSdkVersion = 23
+        compileSdkVersion = 34
+        targetSdkVersion = 34
+        ndkVersion = "26.1.10909125"
+        kotlinVersion = "1.9.22"
+    }
+    repositories {
+        google()
+        mavenCentral()
+    }
+    dependencies {
+        classpath("com.android.tools.build:gradle")
+        classpath("com.facebook.react:react-native-gradle-plugin")
+        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
+    }
+}
+
+apply plugin: "com.facebook.react.rootproject"
android/gradle.properties
--- android/gradle.properties
+++ android/gradle.properties
@@ -1,43 +1,41 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
-org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
-org.gradle.jvmargs=-Xmx4096m -Dkotlin.daemon.jvm.options=-Xmx4096m
-
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
-
-# Use this property to specify which architecture you want to build.
-# You can also override it from the CLI using
-# ./gradlew <task> -PreactNativeArchitectures=x86_64
-reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
-
-# Use this property to enable support to the new architecture.
-# This will allow you to use TurboModules and the Fabric render in
-# your application. You should enable this flag either if you want
-# to write custom TurboModules/Fabric components OR use libraries that
-# are providing them.
-newArchEnabled=false
-
-# Use this property to enable or disable the Hermes JS engine.
-# If set to false, you will be using JSC instead.
-hermesEnabled=true
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
+org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+
+# Use this property to specify which architecture you want to build.
+# You can also override it from the CLI using
+# ./gradlew <task> -PreactNativeArchitectures=x86_64
+reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
+
+# Use this property to enable support to the new architecture.
+# This will allow you to use TurboModules and the Fabric render in
+# your application. You should enable this flag either if you want
+# to write custom TurboModules/Fabric components OR use libraries that
+# are providing them.
+newArchEnabled=false
+
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
android/gradle/wrapper/gradle-wrapper.properties
--- android/gradle/wrapper/gradle-wrapper.properties
+++ android/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,7 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
-networkTimeout=10000
-validateDistributionUrl=true
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
android/settings.gradle
--- android/settings.gradle
+++ android/settings.gradle
@@ -1,4 +1,4 @@
-rootProject.name = 'Send_Location_TA'
-apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
-include ':app'
-includeBuild('../node_modules/@react-native/gradle-plugin')
+rootProject.name = 'kic'
+apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
+include ':app'
+includeBuild('../node_modules/@react-native/gradle-plugin')
app.json
--- app.json
+++ app.json
@@ -1,4 +1,4 @@
-{
-  "name": "Send_Location_TA",
-  "displayName": "Send_Location_TA"
-}
+{
+  "name": "kic",
+  "displayName": "kic"
+}
babel.config.js
--- babel.config.js
+++ babel.config.js
@@ -1,4 +1,3 @@
-module.exports = {
-  presets: ['module:@react-native/babel-preset'],
-  plugins: ['@babel/plugin-transform-export-namespace-from'],
-};
+module.exports = {
+  presets: ['module:@react-native/babel-preset'],
+};
index.js
--- index.js
+++ index.js
@@ -1,9 +1,9 @@
-/**
- * @format
- */
-
-import {AppRegistry} from 'react-native';
-import App from './App';
-import {name as appName} from './app.json';
-
-AppRegistry.registerComponent(appName, () => App);
+/**
+ * @format
+ */
+
+import {AppRegistry} from 'react-native';
+import App from './App';
+import {name as appName} from './app.json';
+
+AppRegistry.registerComponent(appName, () => App);
ios/.xcode.env
--- ios/.xcode.env
+++ ios/.xcode.env
@@ -1,11 +1,11 @@
-# This `.xcode.env` file is versioned and is used to source the environment
-# used when running script phases inside Xcode.
-# To customize your local environment, you can create an `.xcode.env.local`
-# file that is not versioned.
-
-# NODE_BINARY variable contains the PATH to the node executable.
-#
-# Customize the NODE_BINARY variable here.
-# For example, to use nvm with brew, add the following line
-# . "$(brew --prefix nvm)/nvm.sh" --no-use
-export NODE_BINARY=$(command -v node)
+# This `.xcode.env` file is versioned and is used to source the environment
+# used when running script phases inside Xcode.
+# To customize your local environment, you can create an `.xcode.env.local`
+# file that is not versioned.
+
+# NODE_BINARY variable contains the PATH to the node executable.
+#
+# Customize the NODE_BINARY variable here.
+# For example, to use nvm with brew, add the following line
+# . "$(brew --prefix nvm)/nvm.sh" --no-use
+export NODE_BINARY=$(command -v node)
ios/Podfile
--- ios/Podfile
+++ ios/Podfile
@@ -1,75 +1,75 @@
-# Resolve react_native_pods.rb with node to allow for hoisting
-# require Pod::Executable.execute_command('node', ['-p',
-#   'require.resolve(
-#     "react-native/scripts/react_native_pods.rb",
-#     {paths: [process.argv[1]]},
-#   )', __dir__]).strip
-
- def node_require(script)
-   # Resolve script with node to allow for hoisting
-   require Pod::Executable.execute_command('node', ['-p',
-     "require.resolve(
-       '#{script}',
-       {paths: [process.argv[1]]},
-     )", __dir__]).strip
- end
-
- node_require('react-native/scripts/react_native_pods.rb')
- node_require('react-native-permissions/scripts/setup.rb')
-
-platform :ios, min_ios_version_supported
-prepare_react_native_project!
-
-setup_permissions ( [ 
-   'AppTrackingTransparency', 
-   'Bluetooth', 
-   'Calendars', 
-   'CalendarsWriteOnly', 
-   'Camera', 
-   'Contacts', 
-   'FaceID',  
-  'LocationAccuracy', 
-   'LocationAlways', 
-   'LocationWhenInUse', 
-   'MediaLibrary', 
-   'Microphone', 
-   'Motion', 
-   'Notifications', 
-   'PhotoLibrary', 
-   'PhotoLibraryAddOnly', 
-   'Reminders', 
-   'Siri', 
-   'SpeechRecognition', 
-   'StoreKit', 
-] )
-
-linkage = ENV['USE_FRAMEWORKS']
-if linkage != nil
-  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
-  use_frameworks! :linkage => linkage.to_sym
-end
-
-target 'Send_Location_TA' do
-  config = use_native_modules!
-
-  use_react_native!(
-    :path => config[:reactNativePath],
-    # An absolute path to your application root.
-    :app_path => "#{Pod::Config.instance.installation_root}/.."
-  )
-
-  target 'Send_Location_TATests' do
-    inherit! :complete
-    # Pods for testing
-  end
-
-  post_install do |installer|
-    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
-    react_native_post_install(
-      installer,
-      config[:reactNativePath],
-      :mac_catalyst_enabled => false,
-      # :ccache_enabled => true
-    )
-  end
-end
+# Resolve react_native_pods.rb with node to allow for hoisting
+# require Pod::Executable.execute_command('node', ['-p',
+#   'require.resolve(
+#     "react-native/scripts/react_native_pods.rb",
+#     {paths: [process.argv[1]]},
+#   )', __dir__]).strip
+
+def node_require(script)
+  # Resolve script with node to allow for hoisting
+  require Pod::Executable.execute_command('node', ['-p',
+    "require.resolve(
+      '#{script}',
+      {paths: [process.argv[1]]},
+    )", __dir__]).strip
+end
+
+node_require('react-native/scripts/react_native_pods.rb')
+node_require('react-native-permissions/scripts/setup.rb')
+
+platform :ios, min_ios_version_supported
+prepare_react_native_project!
+
+setup_permissions ( [ 
+   'AppTrackingTransparency', 
+   'Bluetooth', 
+   'Calendars', 
+   'CalendarsWriteOnly', 
+   'Camera', 
+   'Contacts', 
+   'FaceID',  
+  'LocationAccuracy', 
+   'LocationAlways', 
+   'LocationWhenInUse', 
+   'MediaLibrary', 
+   'Microphone', 
+   'Motion', 
+   'Notifications', 
+   'PhotoLibrary', 
+   'PhotoLibraryAddOnly', 
+   'Reminders', 
+   'Siri', 
+   'SpeechRecognition', 
+   'StoreKit', 
+] )
+
+linkage = ENV['USE_FRAMEWORKS']
+if linkage != nil
+  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
+  use_frameworks! :linkage => linkage.to_sym
+end
+
+target 'kic' do
+  config = use_native_modules!
+
+  use_react_native!(
+    :path => config[:reactNativePath],
+    # An absolute path to your application root.
+    :app_path => "#{Pod::Config.instance.installation_root}/.."
+  )
+
+  target 'kicTests' do
+    inherit! :complete
+    # Pods for testing
+  end
+
+  post_install do |installer|
+    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
+    react_native_post_install(
+      installer,
+      config[:reactNativePath],
+      :mac_catalyst_enabled => false,
+      # :ccache_enabled => true
+    )
+  end
+end
ios/Podfile.lock
--- ios/Podfile.lock
+++ ios/Podfile.lock
@@ -3,12 +3,12 @@
   - BVLinearGradient (2.8.3):
     - React-Core
   - DoubleConversion (1.1.6)
-  - FBLazyVector (0.74.4)
+  - FBLazyVector (0.74.5)
   - fmt (9.1.0)
   - glog (0.3.5)
-  - hermes-engine (0.74.4):
-    - hermes-engine/Pre-built (= 0.74.4)
-  - hermes-engine/Pre-built (0.74.4)
+  - hermes-engine (0.74.5):
+    - hermes-engine/Pre-built (= 0.74.5)
+  - hermes-engine/Pre-built (0.74.5)
   - RCT-Folly (2024.01.01.00):
     - boost
     - DoubleConversion
@@ -25,27 +25,27 @@
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
-  - RCTDeprecation (0.74.4)
-  - RCTRequired (0.74.4)
-  - RCTTypeSafety (0.74.4):
-    - FBLazyVector (= 0.74.4)
-    - RCTRequired (= 0.74.4)
-    - React-Core (= 0.74.4)
-  - React (0.74.4):
-    - React-Core (= 0.74.4)
-    - React-Core/DevSupport (= 0.74.4)
-    - React-Core/RCTWebSocket (= 0.74.4)
-    - React-RCTActionSheet (= 0.74.4)
-    - React-RCTAnimation (= 0.74.4)
-    - React-RCTBlob (= 0.74.4)
-    - React-RCTImage (= 0.74.4)
-    - React-RCTLinking (= 0.74.4)
-    - React-RCTNetwork (= 0.74.4)
-    - React-RCTSettings (= 0.74.4)
-    - React-RCTText (= 0.74.4)
-    - React-RCTVibration (= 0.74.4)
-  - React-callinvoker (0.74.4)
-  - React-Codegen (0.74.4):
+  - RCTDeprecation (0.74.5)
+  - RCTRequired (0.74.5)
+  - RCTTypeSafety (0.74.5):
+    - FBLazyVector (= 0.74.5)
+    - RCTRequired (= 0.74.5)
+    - React-Core (= 0.74.5)
+  - React (0.74.5):
+    - React-Core (= 0.74.5)
+    - React-Core/DevSupport (= 0.74.5)
+    - React-Core/RCTWebSocket (= 0.74.5)
+    - React-RCTActionSheet (= 0.74.5)
+    - React-RCTAnimation (= 0.74.5)
+    - React-RCTBlob (= 0.74.5)
+    - React-RCTImage (= 0.74.5)
+    - React-RCTLinking (= 0.74.5)
+    - React-RCTNetwork (= 0.74.5)
+    - React-RCTSettings (= 0.74.5)
+    - React-RCTText (= 0.74.5)
+    - React-RCTVibration (= 0.74.5)
+  - React-callinvoker (0.74.5)
+  - React-Codegen (0.74.5):
     - DoubleConversion
     - glog
     - hermes-engine
@@ -65,12 +65,12 @@
     - React-utils
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
-  - React-Core (0.74.4):
+  - React-Core (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
     - RCTDeprecation
-    - React-Core/Default (= 0.74.4)
+    - React-Core/Default (= 0.74.5)
     - React-cxxreact
     - React-featureflags
     - React-hermes
@@ -82,7 +82,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/CoreModulesHeaders (0.74.4):
+  - React-Core/CoreModulesHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -99,7 +99,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/Default (0.74.4):
+  - React-Core/Default (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -115,13 +115,13 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/DevSupport (0.74.4):
+  - React-Core/DevSupport (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
     - RCTDeprecation
-    - React-Core/Default (= 0.74.4)
-    - React-Core/RCTWebSocket (= 0.74.4)
+    - React-Core/Default (= 0.74.5)
+    - React-Core/RCTWebSocket (= 0.74.5)
     - React-cxxreact
     - React-featureflags
     - React-hermes
@@ -133,7 +133,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTActionSheetHeaders (0.74.4):
+  - React-Core/RCTActionSheetHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -150,7 +150,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTAnimationHeaders (0.74.4):
+  - React-Core/RCTAnimationHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -167,7 +167,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTBlobHeaders (0.74.4):
+  - React-Core/RCTBlobHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -184,7 +184,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTImageHeaders (0.74.4):
+  - React-Core/RCTImageHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -201,7 +201,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTLinkingHeaders (0.74.4):
+  - React-Core/RCTLinkingHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -218,7 +218,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTNetworkHeaders (0.74.4):
+  - React-Core/RCTNetworkHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -235,7 +235,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTSettingsHeaders (0.74.4):
+  - React-Core/RCTSettingsHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -252,7 +252,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTTextHeaders (0.74.4):
+  - React-Core/RCTTextHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -269,7 +269,7 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTVibrationHeaders (0.74.4):
+  - React-Core/RCTVibrationHeaders (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -286,12 +286,12 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-Core/RCTWebSocket (0.74.4):
+  - React-Core/RCTWebSocket (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
     - RCTDeprecation
-    - React-Core/Default (= 0.74.4)
+    - React-Core/Default (= 0.74.5)
     - React-cxxreact
     - React-featureflags
     - React-hermes
@@ -303,36 +303,36 @@
     - React-utils
     - SocketRocket (= 0.7.0)
     - Yoga
-  - React-CoreModules (0.74.4):
+  - React-CoreModules (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - RCT-Folly (= 2024.01.01.00)
-    - RCTTypeSafety (= 0.74.4)
+    - RCTTypeSafety (= 0.74.5)
     - React-Codegen
-    - React-Core/CoreModulesHeaders (= 0.74.4)
-    - React-jsi (= 0.74.4)
+    - React-Core/CoreModulesHeaders (= 0.74.5)
+    - React-jsi (= 0.74.5)
     - React-jsinspector
     - React-NativeModulesApple
     - React-RCTBlob
-    - React-RCTImage (= 0.74.4)
+    - React-RCTImage (= 0.74.5)
     - ReactCommon
     - SocketRocket (= 0.7.0)
-  - React-cxxreact (0.74.4):
+  - React-cxxreact (0.74.5):
     - boost (= 1.83.0)
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-callinvoker (= 0.74.4)
-    - React-debug (= 0.74.4)
-    - React-jsi (= 0.74.4)
+    - React-callinvoker (= 0.74.5)
+    - React-debug (= 0.74.5)
+    - React-jsi (= 0.74.5)
     - React-jsinspector
-    - React-logger (= 0.74.4)
-    - React-perflogger (= 0.74.4)
-    - React-runtimeexecutor (= 0.74.4)
-  - React-debug (0.74.4)
-  - React-Fabric (0.74.4):
+    - React-logger (= 0.74.5)
+    - React-perflogger (= 0.74.5)
+    - React-runtimeexecutor (= 0.74.5)
+  - React-debug (0.74.5)
+  - React-Fabric (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -343,20 +343,20 @@
     - React-Core
     - React-cxxreact
     - React-debug
-    - React-Fabric/animations (= 0.74.4)
-    - React-Fabric/attributedstring (= 0.74.4)
-    - React-Fabric/componentregistry (= 0.74.4)
-    - React-Fabric/componentregistrynative (= 0.74.4)
-    - React-Fabric/components (= 0.74.4)
-    - React-Fabric/core (= 0.74.4)
-    - React-Fabric/imagemanager (= 0.74.4)
-    - React-Fabric/leakchecker (= 0.74.4)
-    - React-Fabric/mounting (= 0.74.4)
-    - React-Fabric/scheduler (= 0.74.4)
-    - React-Fabric/telemetry (= 0.74.4)
-    - React-Fabric/templateprocessor (= 0.74.4)
-    - React-Fabric/textlayoutmanager (= 0.74.4)
-    - React-Fabric/uimanager (= 0.74.4)
+    - React-Fabric/animations (= 0.74.5)
+    - React-Fabric/attributedstring (= 0.74.5)
+    - React-Fabric/componentregistry (= 0.74.5)
+    - React-Fabric/componentregistrynative (= 0.74.5)
+    - React-Fabric/components (= 0.74.5)
+    - React-Fabric/core (= 0.74.5)
+    - React-Fabric/imagemanager (= 0.74.5)
+    - React-Fabric/leakchecker (= 0.74.5)
+    - React-Fabric/mounting (= 0.74.5)
+    - React-Fabric/scheduler (= 0.74.5)
+    - React-Fabric/telemetry (= 0.74.5)
+    - React-Fabric/templateprocessor (= 0.74.5)
+    - React-Fabric/textlayoutmanager (= 0.74.5)
+    - React-Fabric/uimanager (= 0.74.5)
     - React-graphics
     - React-jsi
     - React-jsiexecutor
@@ -365,7 +365,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/animations (0.74.4):
+  - React-Fabric/animations (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -384,7 +384,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/attributedstring (0.74.4):
+  - React-Fabric/attributedstring (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -403,7 +403,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/componentregistry (0.74.4):
+  - React-Fabric/componentregistry (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -422,7 +422,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/componentregistrynative (0.74.4):
+  - React-Fabric/componentregistrynative (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -441,7 +441,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components (0.74.4):
+  - React-Fabric/components (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -452,17 +452,17 @@
     - React-Core
     - React-cxxreact
     - React-debug
-    - React-Fabric/components/inputaccessory (= 0.74.4)
-    - React-Fabric/components/legacyviewmanagerinterop (= 0.74.4)
-    - React-Fabric/components/modal (= 0.74.4)
-    - React-Fabric/components/rncore (= 0.74.4)
-    - React-Fabric/components/root (= 0.74.4)
-    - React-Fabric/components/safeareaview (= 0.74.4)
-    - React-Fabric/components/scrollview (= 0.74.4)
-    - React-Fabric/components/text (= 0.74.4)
-    - React-Fabric/components/textinput (= 0.74.4)
-    - React-Fabric/components/unimplementedview (= 0.74.4)
-    - React-Fabric/components/view (= 0.74.4)
+    - React-Fabric/components/inputaccessory (= 0.74.5)
+    - React-Fabric/components/legacyviewmanagerinterop (= 0.74.5)
+    - React-Fabric/components/modal (= 0.74.5)
+    - React-Fabric/components/rncore (= 0.74.5)
+    - React-Fabric/components/root (= 0.74.5)
+    - React-Fabric/components/safeareaview (= 0.74.5)
+    - React-Fabric/components/scrollview (= 0.74.5)
+    - React-Fabric/components/text (= 0.74.5)
+    - React-Fabric/components/textinput (= 0.74.5)
+    - React-Fabric/components/unimplementedview (= 0.74.5)
+    - React-Fabric/components/view (= 0.74.5)
     - React-graphics
     - React-jsi
     - React-jsiexecutor
@@ -471,7 +471,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/inputaccessory (0.74.4):
+  - React-Fabric/components/inputaccessory (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -490,7 +490,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/legacyviewmanagerinterop (0.74.4):
+  - React-Fabric/components/legacyviewmanagerinterop (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -509,7 +509,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/modal (0.74.4):
+  - React-Fabric/components/modal (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -528,7 +528,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/rncore (0.74.4):
+  - React-Fabric/components/rncore (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -547,7 +547,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/root (0.74.4):
+  - React-Fabric/components/root (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -566,7 +566,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/safeareaview (0.74.4):
+  - React-Fabric/components/safeareaview (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -585,7 +585,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/scrollview (0.74.4):
+  - React-Fabric/components/scrollview (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -604,7 +604,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/text (0.74.4):
+  - React-Fabric/components/text (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -623,7 +623,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/textinput (0.74.4):
+  - React-Fabric/components/textinput (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -642,7 +642,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/unimplementedview (0.74.4):
+  - React-Fabric/components/unimplementedview (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -661,7 +661,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/components/view (0.74.4):
+  - React-Fabric/components/view (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -681,7 +681,7 @@
     - React-utils
     - ReactCommon/turbomodule/core
     - Yoga
-  - React-Fabric/core (0.74.4):
+  - React-Fabric/core (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -700,7 +700,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/imagemanager (0.74.4):
+  - React-Fabric/imagemanager (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -719,7 +719,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/leakchecker (0.74.4):
+  - React-Fabric/leakchecker (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -738,7 +738,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/mounting (0.74.4):
+  - React-Fabric/mounting (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -757,7 +757,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/scheduler (0.74.4):
+  - React-Fabric/scheduler (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -776,7 +776,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/telemetry (0.74.4):
+  - React-Fabric/telemetry (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -795,7 +795,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/templateprocessor (0.74.4):
+  - React-Fabric/templateprocessor (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -814,7 +814,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/textlayoutmanager (0.74.4):
+  - React-Fabric/textlayoutmanager (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -834,7 +834,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-Fabric/uimanager (0.74.4):
+  - React-Fabric/uimanager (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
@@ -853,45 +853,45 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon/turbomodule/core
-  - React-FabricImage (0.74.4):
+  - React-FabricImage (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly/Fabric (= 2024.01.01.00)
-    - RCTRequired (= 0.74.4)
-    - RCTTypeSafety (= 0.74.4)
+    - RCTRequired (= 0.74.5)
+    - RCTTypeSafety (= 0.74.5)
     - React-Fabric
     - React-graphics
     - React-ImageManager
     - React-jsi
-    - React-jsiexecutor (= 0.74.4)
+    - React-jsiexecutor (= 0.74.5)
     - React-logger
     - React-rendererdebug
     - React-utils
     - ReactCommon
     - Yoga
-  - React-featureflags (0.74.4)
-  - React-graphics (0.74.4):
+  - React-featureflags (0.74.5)
+  - React-graphics (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - RCT-Folly/Fabric (= 2024.01.01.00)
-    - React-Core/Default (= 0.74.4)
+    - React-Core/Default (= 0.74.5)
     - React-utils
-  - React-hermes (0.74.4):
+  - React-hermes (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-cxxreact (= 0.74.4)
+    - React-cxxreact (= 0.74.5)
     - React-jsi
-    - React-jsiexecutor (= 0.74.4)
+    - React-jsiexecutor (= 0.74.5)
     - React-jsinspector
-    - React-perflogger (= 0.74.4)
+    - React-perflogger (= 0.74.5)
     - React-runtimeexecutor
-  - React-ImageManager (0.74.4):
+  - React-ImageManager (0.74.5):
     - glog
     - RCT-Folly/Fabric
     - React-Core/Default
@@ -900,74 +900,55 @@
     - React-graphics
     - React-rendererdebug
     - React-utils
-  - React-jserrorhandler (0.74.4):
+  - React-jserrorhandler (0.74.5):
     - RCT-Folly/Fabric (= 2024.01.01.00)
     - React-debug
     - React-jsi
     - React-Mapbuffer
-  - React-jsi (0.74.4):
+  - React-jsi (0.74.5):
     - boost (= 1.83.0)
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-  - React-jsiexecutor (0.74.4):
+  - React-jsiexecutor (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-cxxreact (= 0.74.4)
-    - React-jsi (= 0.74.4)
+    - React-cxxreact (= 0.74.5)
+    - React-jsi (= 0.74.5)
     - React-jsinspector
-    - React-perflogger (= 0.74.4)
-  - React-jsinspector (0.74.4):
+    - React-perflogger (= 0.74.5)
+  - React-jsinspector (0.74.5):
     - DoubleConversion
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
     - React-featureflags
     - React-jsi
-    - React-runtimeexecutor (= 0.74.4)
-  - React-jsitracing (0.74.4):
+    - React-runtimeexecutor (= 0.74.5)
+  - React-jsitracing (0.74.5):
     - React-jsi
-  - React-logger (0.74.4):
+  - React-logger (0.74.5):
     - glog
-  - React-Mapbuffer (0.74.4):
+  - React-Mapbuffer (0.74.5):
     - glog
     - React-debug
-  - react-native-background-actions (4.0.0):
-    - React-Core
-  - react-native-geolocation (3.3.0):
-    - DoubleConversion
-    - glog
-    - hermes-engine
-    - RCT-Folly (= 2024.01.01.00)
-    - RCTRequired
-    - RCTTypeSafety
-    - React-Codegen
-    - React-Core
-    - React-debug
-    - React-Fabric
-    - React-featureflags
-    - React-graphics
-    - React-ImageManager
-    - React-NativeModulesApple
-    - React-RCTFabric
-    - React-rendererdebug
-    - React-utils
-    - ReactCommon/turbomodule/bridging
-    - ReactCommon/turbomodule/core
-    - Yoga
+  - react-native-exif (0.5.0):
+    - React
   - react-native-geolocation-service (5.3.1):
     - React
+  - react-native-image-resizer (3.0.10):
+    - React-Core
   - react-native-keep-awake (1.2.4):
     - React-Core
-  - react-native-safe-area-context (4.10.1):
+  - react-native-safe-area-context (4.10.8):
     - React-Core
-  - React-nativeconfig (0.74.4)
-  - React-NativeModulesApple (0.74.4):
+  - React-nativeconfig (0.74.5)
+  - React-NativeModulesApple (0.74.5):
     - glog
     - hermes-engine
     - React-callinvoker
@@ -978,10 +959,10 @@
     - React-runtimeexecutor
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
-  - React-perflogger (0.74.4)
-  - React-RCTActionSheet (0.74.4):
-    - React-Core/RCTActionSheetHeaders (= 0.74.4)
-  - React-RCTAnimation (0.74.4):
+  - React-perflogger (0.74.5)
+  - React-RCTActionSheet (0.74.5):
+    - React-Core/RCTActionSheetHeaders (= 0.74.5)
+  - React-RCTAnimation (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - RCTTypeSafety
     - React-Codegen
@@ -989,7 +970,7 @@
     - React-jsi
     - React-NativeModulesApple
     - ReactCommon
-  - React-RCTAppDelegate (0.74.4):
+  - React-RCTAppDelegate (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - RCTRequired
     - RCTTypeSafety
@@ -1013,7 +994,7 @@
     - React-runtimescheduler
     - React-utils
     - ReactCommon
-  - React-RCTBlob (0.74.4):
+  - React-RCTBlob (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - hermes-engine
@@ -1026,7 +1007,7 @@
     - React-NativeModulesApple
     - React-RCTNetwork
     - ReactCommon
-  - React-RCTFabric (0.74.4):
+  - React-RCTFabric (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly/Fabric (= 2024.01.01.00)
@@ -1046,7 +1027,7 @@
     - React-runtimescheduler
     - React-utils
     - Yoga
-  - React-RCTImage (0.74.4):
+  - React-RCTImage (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - RCTTypeSafety
     - React-Codegen
@@ -1055,14 +1036,14 @@
     - React-NativeModulesApple
     - React-RCTNetwork
     - ReactCommon
-  - React-RCTLinking (0.74.4):
+  - React-RCTLinking (0.74.5):
     - React-Codegen
-    - React-Core/RCTLinkingHeaders (= 0.74.4)
-    - React-jsi (= 0.74.4)
+    - React-Core/RCTLinkingHeaders (= 0.74.5)
+    - React-jsi (= 0.74.5)
     - React-NativeModulesApple
     - ReactCommon
-    - ReactCommon/turbomodule/core (= 0.74.4)
-  - React-RCTNetwork (0.74.4):
+    - ReactCommon/turbomodule/core (= 0.74.5)
+  - React-RCTNetwork (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - RCTTypeSafety
     - React-Codegen
@@ -1070,7 +1051,7 @@
     - React-jsi
     - React-NativeModulesApple
     - ReactCommon
-  - React-RCTSettings (0.74.4):
+  - React-RCTSettings (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - RCTTypeSafety
     - React-Codegen
@@ -1078,23 +1059,23 @@
     - React-jsi
     - React-NativeModulesApple
     - ReactCommon
-  - React-RCTText (0.74.4):
-    - React-Core/RCTTextHeaders (= 0.74.4)
+  - React-RCTText (0.74.5):
+    - React-Core/RCTTextHeaders (= 0.74.5)
     - Yoga
-  - React-RCTVibration (0.74.4):
+  - React-RCTVibration (0.74.5):
     - RCT-Folly (= 2024.01.01.00)
     - React-Codegen
     - React-Core/RCTVibrationHeaders
     - React-jsi
     - React-NativeModulesApple
     - ReactCommon
-  - React-rendererdebug (0.74.4):
+  - React-rendererdebug (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - RCT-Folly (= 2024.01.01.00)
     - React-debug
-  - React-rncore (0.74.4)
-  - React-RuntimeApple (0.74.4):
+  - React-rncore (0.74.5)
+  - React-RuntimeApple (0.74.5):
     - hermes-engine
     - RCT-Folly/Fabric (= 2024.01.01.00)
     - React-callinvoker
@@ -1112,7 +1093,7 @@
     - React-runtimeexecutor
     - React-RuntimeHermes
     - React-utils
-  - React-RuntimeCore (0.74.4):
+  - React-RuntimeCore (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly/Fabric (= 2024.01.01.00)
@@ -1125,9 +1106,9 @@
     - React-runtimeexecutor
     - React-runtimescheduler
     - React-utils
-  - React-runtimeexecutor (0.74.4):
-    - React-jsi (= 0.74.4)
-  - React-RuntimeHermes (0.74.4):
+  - React-runtimeexecutor (0.74.5):
+    - React-jsi (= 0.74.5)
+  - React-RuntimeHermes (0.74.5):
     - hermes-engine
     - RCT-Folly/Fabric (= 2024.01.01.00)
     - React-featureflags
@@ -1138,7 +1119,7 @@
     - React-nativeconfig
     - React-RuntimeCore
     - React-utils
-  - React-runtimescheduler (0.74.4):
+  - React-runtimescheduler (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
@@ -1150,56 +1131,56 @@
     - React-rendererdebug
     - React-runtimeexecutor
     - React-utils
-  - React-utils (0.74.4):
+  - React-utils (0.74.5):
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
     - React-debug
-    - React-jsi (= 0.74.4)
-  - ReactCommon (0.74.4):
-    - ReactCommon/turbomodule (= 0.74.4)
-  - ReactCommon/turbomodule (0.74.4):
+    - React-jsi (= 0.74.5)
+  - ReactCommon (0.74.5):
+    - ReactCommon/turbomodule (= 0.74.5)
+  - ReactCommon/turbomodule (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-callinvoker (= 0.74.4)
-    - React-cxxreact (= 0.74.4)
-    - React-jsi (= 0.74.4)
-    - React-logger (= 0.74.4)
-    - React-perflogger (= 0.74.4)
-    - ReactCommon/turbomodule/bridging (= 0.74.4)
-    - ReactCommon/turbomodule/core (= 0.74.4)
-  - ReactCommon/turbomodule/bridging (0.74.4):
+    - React-callinvoker (= 0.74.5)
+    - React-cxxreact (= 0.74.5)
+    - React-jsi (= 0.74.5)
+    - React-logger (= 0.74.5)
+    - React-perflogger (= 0.74.5)
+    - ReactCommon/turbomodule/bridging (= 0.74.5)
+    - ReactCommon/turbomodule/core (= 0.74.5)
+  - ReactCommon/turbomodule/bridging (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-callinvoker (= 0.74.4)
-    - React-cxxreact (= 0.74.4)
-    - React-jsi (= 0.74.4)
-    - React-logger (= 0.74.4)
-    - React-perflogger (= 0.74.4)
-  - ReactCommon/turbomodule/core (0.74.4):
+    - React-callinvoker (= 0.74.5)
+    - React-cxxreact (= 0.74.5)
+    - React-jsi (= 0.74.5)
+    - React-logger (= 0.74.5)
+    - React-perflogger (= 0.74.5)
+  - ReactCommon/turbomodule/core (0.74.5):
     - DoubleConversion
     - fmt (= 9.1.0)
     - glog
     - hermes-engine
     - RCT-Folly (= 2024.01.01.00)
-    - React-callinvoker (= 0.74.4)
-    - React-cxxreact (= 0.74.4)
-    - React-debug (= 0.74.4)
-    - React-jsi (= 0.74.4)
-    - React-logger (= 0.74.4)
-    - React-perflogger (= 0.74.4)
-    - React-utils (= 0.74.4)
-  - RNCAsyncStorage (1.23.1):
+    - React-callinvoker (= 0.74.5)
+    - React-cxxreact (= 0.74.5)
+    - React-debug (= 0.74.5)
+    - React-jsi (= 0.74.5)
+    - React-logger (= 0.74.5)
+    - React-perflogger (= 0.74.5)
+    - React-utils (= 0.74.5)
+  - RNCAsyncStorage (1.24.0):
     - React-Core
   - RNFS (2.20.0):
     - React-Core
-  - RNGestureHandler (2.17.1):
+  - RNGestureHandler (2.18.1):
     - DoubleConversion
     - glog
     - hermes-engine
@@ -1222,7 +1203,30 @@
     - Yoga
   - RNPermissions (4.1.5):
     - React-Core
-  - RNReanimated (3.11.0):
+  - RNReanimated (3.15.0):
+    - DoubleConversion
+    - glog
+    - hermes-engine
+    - RCT-Folly (= 2024.01.01.00)
+    - RCTRequired
+    - RCTTypeSafety
+    - React-Codegen
+    - React-Core
+    - React-debug
+    - React-Fabric
+    - React-featureflags
+    - React-graphics
+    - React-ImageManager
+    - React-NativeModulesApple
+    - React-RCTFabric
+    - React-rendererdebug
+    - React-utils
+    - ReactCommon/turbomodule/bridging
+    - ReactCommon/turbomodule/core
+    - RNReanimated/reanimated (= 3.15.0)
+    - RNReanimated/worklets (= 3.15.0)
+    - Yoga
+  - RNReanimated/reanimated (3.15.0):
     - DoubleConversion
     - glog
     - hermes-engine
@@ -1243,7 +1247,28 @@
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
     - Yoga
-  - RNScreens (3.31.1):
+  - RNReanimated/worklets (3.15.0):
+    - DoubleConversion
+    - glog
+    - hermes-engine
+    - RCT-Folly (= 2024.01.01.00)
+    - RCTRequired
+    - RCTTypeSafety
+    - React-Codegen
+    - React-Core
+    - React-debug
+    - React-Fabric
+    - React-featureflags
+    - React-graphics
+    - React-ImageManager
+    - React-NativeModulesApple
+    - React-RCTFabric
+    - React-rendererdebug
+    - React-utils
+    - ReactCommon/turbomodule/bridging
+    - ReactCommon/turbomodule/core
+    - Yoga
+  - RNScreens (3.34.0):
     - DoubleConversion
     - glog
     - hermes-engine
@@ -1265,14 +1290,14 @@
     - ReactCommon/turbomodule/bridging
     - ReactCommon/turbomodule/core
     - Yoga
-  - RNSVG (15.3.0):
+  - RNSVG (15.7.1):
     - React-Core
   - SocketRocket (0.7.0)
-  - VisionCamera (4.0.5):
-    - VisionCamera/Core (= 4.0.5)
-    - VisionCamera/React (= 4.0.5)
-  - VisionCamera/Core (4.0.5)
-  - VisionCamera/React (4.0.5):
+  - VisionCamera (4.5.1):
+    - VisionCamera/Core (= 4.5.1)
+    - VisionCamera/React (= 4.5.1)
+  - VisionCamera/Core (4.5.1)
+  - VisionCamera/React (4.5.1):
     - React-Core
   - Yoga (0.0.0)
 
@@ -1310,9 +1335,9 @@
   - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
   - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
   - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
-  - react-native-background-actions (from `../node_modules/react-native-background-actions`)
-  - "react-native-geolocation (from `../node_modules/@react-native-community/geolocation`)"
+  - react-native-exif (from `../node_modules/react-native-exif`)
   - react-native-geolocation-service (from `../node_modules/react-native-geolocation-service`)
+  - "react-native-image-resizer (from `../node_modules/@bam.tech/react-native-image-resizer`)"
   - "react-native-keep-awake (from `../node_modules/@sayem314/react-native-keep-awake`)"
   - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
   - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
@@ -1416,12 +1441,12 @@
     :path: "../node_modules/react-native/ReactCommon/logger"
   React-Mapbuffer:
     :path: "../node_modules/react-native/ReactCommon"
-  react-native-background-actions:
-    :path: "../node_modules/react-native-background-actions"
-  react-native-geolocation:
-    :path: "../node_modules/@react-native-community/geolocation"
+  react-native-exif:
+    :path: "../node_modules/react-native-exif"
   react-native-geolocation-service:
     :path: "../node_modules/react-native-geolocation-service"
+  react-native-image-resizer:
+    :path: "../node_modules/@bam.tech/react-native-image-resizer"
   react-native-keep-awake:
     :path: "../node_modules/@sayem314/react-native-keep-awake"
   react-native-safe-area-context:
@@ -1495,73 +1520,73 @@
   boost: d3f49c53809116a5d38da093a8aa78bf551aed09
   BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
   DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
-  FBLazyVector: 4c674c2d53de79c145d6a723910543d7b57ed74c
+  FBLazyVector: ac12dc084d1c8ec4cc4d7b3cf1b0ebda6dab85af
   fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
   glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
-  hermes-engine: 6312f669c895e05f0f6029554061593711770ea6
+  hermes-engine: 8c1577f3fdb849cbe7729c2e7b5abc4b845e88f8
   RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
-  RCTDeprecation: d83da85890d5bb18efd2809a733865c1c5c11487
-  RCTRequired: e109419eacfb10fbb79a3ecb57ebcad198593d8a
-  RCTTypeSafety: 9d0307c2738867b9850f096914a15294124b2439
-  React: 40ad59420ae403a6d2d49f2787f0bfaabaed4fdf
-  React-callinvoker: a5fb605689272d6f5640738311aa510d3f59869f
-  React-Codegen: 3267a426718c8a0a979d0cd0495ba793cfdba7ca
-  React-Core: b1eeb2b94117f6ef5b4b0ed38f2f8d482ce915ce
-  React-CoreModules: e60a158a4e1b109ccdd781fb649f36691eb954d7
-  React-cxxreact: 3749b5548f8b66a304729e159dfaf3cfd7196c3a
-  React-debug: 8e15e6d6456f9b8521958deb40157eeeaac2914d
-  React-Fabric: 52cf1f94d5c6b05fe6057ba07796a633daf93735
-  React-FabricImage: 6e0f28a6ec040be4b5bd1a6e5eeda7263639a24c
-  React-featureflags: 81279a0d43736e9867cf0b736c868257af04c827
-  React-graphics: 37c161d8e634526897f12837f3e62a2895dede95
-  React-hermes: 3cfa4668970c810db0f6b43bd5c32f5927fd0500
-  React-ImageManager: 276987aeb4008fe8abe10bfc53d7160c96c31052
-  React-jserrorhandler: 0cdb976ee0e2ed4b93f501491e84954f80bf5f34
-  React-jsi: 18011ef308cc43e2fb21a1de0b61eabd9f899887
-  React-jsiexecutor: 156298b2ddebed0f6bcc526edd3deb4d240437bc
-  React-jsinspector: ed6c5a768dea8e344f07242bd9946b666b78228e
-  React-jsitracing: 4e9c99e73a6269b27b0d4cbab277dd90df3e5ac0
-  React-logger: fbfb50e2a2b1b46ee087f0a52739fadecc5e81a4
-  React-Mapbuffer: d39610dff659d8cf1fea485abae08bbf6f9c8279
-  react-native-background-actions: a290b3f36463c2c6b7372c17378619942f630b17
-  react-native-geolocation: 5c5dd5de4571c55014e9e98214b273eed854f293
+  RCTDeprecation: 3afceddffa65aee666dafd6f0116f1d975db1584
+  RCTRequired: ec1239bc9d8bf63e10fb92bd8b26171a9258e0c1
+  RCTTypeSafety: f5ecbc86c5c5fa163c05acb7a1c5012e15b5f994
+  React: fc9fa7258eff606f44d58c5b233a82dc9cf09018
+  React-callinvoker: e3fab14d69607fb7e8e3a57e5a415aed863d3599
+  React-Codegen: 6fa87b7c6b8efcd0cef4bfeaec8c8bc8a6abe75a
+  React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a
+  React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256
+  React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd
+  React-debug: d30893c49ae1bce4037ea5cd8bb2511d2a38d057
+  React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26
+  React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7
+  React-featureflags: 4ae83e72d9a92452793601ac9ac7d2280e486089
+  React-graphics: 61a026e1c1e7e20d20ac9fec6f6de631732b233d
+  React-hermes: a7054fbcbda3957e3c5eaad06ef9bf79998d535a
+  React-ImageManager: 2bbd6eb2e696bc680f76f84563e4b87d241614e1
+  React-jserrorhandler: 56fa04d49bfbe54ddfece7916673a73ebfea286b
+  React-jsi: f3ce1dd2e950b6ad12b65ea3ef89168f1b94c584
+  React-jsiexecutor: b4df3a27973d82f9abf3c4bd0f88e042cda25f16
+  React-jsinspector: 97ea746c023687de7313ee289817d6991d596c7d
+  React-jsitracing: 3b6060bbf5317663667e1dd93560c7943ab86ccc
+  React-logger: 257858bd55f3a4e1bc0cf07ddc8fb9faba6f8c7c
+  React-Mapbuffer: 6c1cacdbf40b531f549eba249e531a7d0bfd8e7f
+  react-native-exif: c43e7c18af8bfa133c79145671a0f036e413468e
   react-native-geolocation-service: 608e1da71a1ac31b4de64d9ef2815f697978c55b
+  react-native-image-resizer: fd0c333eca55147bd55c5e054cac95dcd0da6814
   react-native-keep-awake: a15b33cd9b94a2da9b0a1c50ac64ac2391d3e330
-  react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d
-  React-nativeconfig: 2be4363c2c4ac2b42419577774e83e4e4fd2af9f
-  React-NativeModulesApple: 453ada38f826a508e48872c7a7877c431af48bba
-  React-perflogger: 9745f800ab4d12ec4325bde7bd090eafb87c5570
-  React-RCTActionSheet: 4225e883c5feaffc072c86128cc42cb070097010
-  React-RCTAnimation: 6b318e7e475ea574abf6a65e58e4989dd19d9ec4
-  React-RCTAppDelegate: 00d29b205df54386bc4e9c8929c500ed00ee1d57
-  React-RCTBlob: cf152386cc829be9323b2845fd9ec25122a986c3
-  React-RCTFabric: 071b326a331bd1ccb59e5886c0cd38e414ec9c9f
-  React-RCTImage: d3d5e0f0740fbd53705f7e9acc067bafe395026c
-  React-RCTLinking: 3ed7d222d3534287b408855b9d378d6576b7661b
-  React-RCTNetwork: 33a6bb615c1f7678538298aed9f27ecd69d512f3
-  React-RCTSettings: bbadd0bedde8fc5f4ef337534b1368d61e104e76
-  React-RCTText: 1a41cd4ce814366745b6107e6f15eb0ada7ff240
-  React-RCTVibration: 8275c91f707e03ead0a010e9fbeda53a645335ca
-  React-rendererdebug: 6ba24e1d975c89a6e92440be4f246ba8bed432c6
-  React-rncore: 65fe0264f5c93ccb65bd6cae6201c80d34e625c0
-  React-RuntimeApple: 93e7c4c6a0be2eb3ce8dc31fdddea5708cd2ad2b
-  React-RuntimeCore: 1a2f2dfcba853d01c083db2b7d96f32f9768a677
-  React-runtimeexecutor: 6abf418f2d0038fb3fef15444d9c691db198771c
-  React-RuntimeHermes: fb6f76a5cd4212a0af4789794d4a9f5147e2f1aa
-  React-runtimescheduler: 3f312d33f475467a59864e0c5ab8708461387d1c
-  React-utils: e8b0eac797c81c574b24f6515fec4015599b643c
-  ReactCommon: eebffb37a90138c6db6eb8b2d952e7e5c6bc083c
-  RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
+  react-native-safe-area-context: b7daa1a8df36095a032dff095a1ea8963cb48371
+  React-nativeconfig: ba9a2e54e2f0882cf7882698825052793ed4c851
+  React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697
+  React-perflogger: ed4e0c65781521e0424f2e5e40b40cc7879d737e
+  React-RCTActionSheet: 49d53ff03bb5688ca4606c55859053a0cd129ea5
+  React-RCTAnimation: 07b4923885c52c397c4ec103924bf6e53b42c73e
+  React-RCTAppDelegate: 316e295076734baf9bdf1bfac7d92ab647aed930
+  React-RCTBlob: 85c57b0d5e667ff8a472163ba3af0628171a64bb
+  React-RCTFabric: 97c1465ded4dc92841f5376a39e43e1b2c455f40
+  React-RCTImage: b965c85bec820e2a9c154b1fb00a2ecdd59a9c92
+  React-RCTLinking: 75f04a5f27c26c4e73a39c50df470820d219df79
+  React-RCTNetwork: c1a9143f4d5778efc92da40d83969d03912ccc24
+  React-RCTSettings: c6800f91c0ecd48868cd5db754b0b0a7f5ffe039
+  React-RCTText: b923e24f9b7250bc4f7ab154c4168ad9f8d8fc9d
+  React-RCTVibration: 08c4f0c917c435b3619386c25a94ee5d64c250f0
+  React-rendererdebug: 3cda04217d9df67b94397ee0ead8ef3d8b7e427b
+  React-rncore: 4013508a2f3fcf46c961919bbbd4bfdda198977e
+  React-RuntimeApple: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88
+  React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087
+  React-runtimeexecutor: 0e688aefc14c6bc8601f4968d8d01c3fb6446844
+  React-RuntimeHermes: 4d6ef6bb0f2b0b40d59143317f6b99c82764c959
+  React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961
+  React-utils: f242eb7e7889419d979ca0e1c02ccc0ea6e43b29
+  ReactCommon: f7da14a8827b72704169a48c929bcde802698361
+  RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a
   RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
-  RNGestureHandler: 8dbcccada4a7e702e7dec9338c251b1cf393c960
+  RNGestureHandler: efed690b8493a00b99654043daeb1335276ac4a2
   RNPermissions: 6a1360ea53826cd3013fcf6e79dcf5dbf72f66b2
-  RNReanimated: 7ad0f08a845cb60955ee5d461d2156d7b9707118
-  RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208
-  RNSVG: a48668fd382115bc89761ce291a81c4ca5f2fd2e
+  RNReanimated: 45553a3ae29a75a76269595f8554d07d4090e392
+  RNScreens: aa943ad421c3ced3ef5a47ede02b0cbfc43a012e
+  RNSVG: 4590aa95758149fa27c5c83e54a6a466349a1688
   SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
-  VisionCamera: 59949b04a51c00a52a6d7125425d01664792c9bd
-  Yoga: 0efb3e1bd40ba59b009f01badea863281101de78
+  VisionCamera: 104de00dce2e04dec51bfb6027eff0312fa3174e
+  Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8
 
-PODFILE CHECKSUM: bf0cdc7218ece3fb280b317225cd8be410cb4dd1
+PODFILE CHECKSUM: 5a82d4d15afa17968d730a16edfce00033297a78
 
 COCOAPODS: 1.15.2
 
ios/background.swift (added)
+++ ios/background.swift
@@ -0,0 +1,8 @@
+//
+//  background.swift
+//  kic
+//
+//  Created by 류윤주 on 8/7/24.
+//
+
+import Foundation
 
ios/kic-Bridging-Header.h (added)
+++ ios/kic-Bridging-Header.h
@@ -0,0 +1,4 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
 
ios/kic.xcodeproj/project.pbxproj (added)
+++ ios/kic.xcodeproj/project.pbxproj
@@ -0,0 +1,803 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 54;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		00E356F31AD99517003FC87E /* kicTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* kicTests.m */; };
+		0C80B921A6F3F58F76C31292 /* libPods-kic.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-kic.a */; };
+		13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
+		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+		7699B88040F8A987B510C191 /* libPods-kic-kicTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-kic-kicTests.a */; };
+		81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+		8C5B8FFDD04E998A8479C881 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A75060D03500A85683F48E4E /* PrivacyInfo.xcprivacy */; };
+		ED8583632C634116003406E5 /* background.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8583622C634116003406E5 /* background.swift */; };
+		EDDB63C52C63674200AD1F9F /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C92C626F9D0031B9D9 /* AntDesign.ttf */; };
+		EDDB63C62C63674200AD1F9F /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C72C626F9D0031B9D9 /* Entypo.ttf */; };
+		EDDB63C72C63674200AD1F9F /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5CC2C626F9D0031B9D9 /* EvilIcons.ttf */; };
+		EDDB63C82C63674200AD1F9F /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5BB2C626F9D0031B9D9 /* Feather.ttf */; };
+		EDDB63C92C63674200AD1F9F /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C52C626F9D0031B9D9 /* FontAwesome.ttf */; };
+		EDDB63CA2C63674200AD1F9F /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C12C626F9D0031B9D9 /* FontAwesome5_Brands.ttf */; };
+		EDDB63CB2C63674200AD1F9F /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5BF2C626F9D0031B9D9 /* FontAwesome5_Regular.ttf */; };
+		EDDB63CC2C63674200AD1F9F /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C62C626F9D0031B9D9 /* FontAwesome5_Solid.ttf */; };
+		EDDB63CD2C63674200AD1F9F /* FontAwesome6_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5CA2C626F9D0031B9D9 /* FontAwesome6_Brands.ttf */; };
+		EDDB63CE2C63674200AD1F9F /* FontAwesome6_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5BD2C626F9D0031B9D9 /* FontAwesome6_Regular.ttf */; };
+		EDDB63CF2C63674200AD1F9F /* FontAwesome6_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C02C626F9D0031B9D9 /* FontAwesome6_Solid.ttf */; };
+		EDDB63D02C63674200AD1F9F /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5CB2C626F9D0031B9D9 /* Fontisto.ttf */; };
+		EDDB63D12C63674200AD1F9F /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5BE2C626F9D0031B9D9 /* Foundation.ttf */; };
+		EDDB63D22C63674200AD1F9F /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C42C626F9D0031B9D9 /* Ionicons.ttf */; };
+		EDDB63D32C63674200AD1F9F /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C22C626F9D0031B9D9 /* MaterialCommunityIcons.ttf */; };
+		EDDB63D42C63674200AD1F9F /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5BC2C626F9D0031B9D9 /* MaterialIcons.ttf */; };
+		EDDB63D52C63674200AD1F9F /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C82C626F9D0031B9D9 /* Octicons.ttf */; };
+		EDDB63D62C63674200AD1F9F /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5CD2C626F9D0031B9D9 /* SimpleLineIcons.ttf */; };
+		EDDB63D72C63674200AD1F9F /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ED56E5C32C626F9D0031B9D9 /* Zocial.ttf */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
+			remoteInfo = kic;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		00E356EE1AD99517003FC87E /* kicTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = kicTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		00E356F21AD99517003FC87E /* kicTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = kicTests.m; sourceTree = "<group>"; };
+		13B07F961A680F5B00A75B9A /* kic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = kic.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = kic/AppDelegate.h; sourceTree = "<group>"; };
+		13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = kic/AppDelegate.mm; sourceTree = "<group>"; };
+		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = kic/Images.xcassets; sourceTree = "<group>"; };
+		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = kic/Info.plist; sourceTree = "<group>"; };
+		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = kic/main.m; sourceTree = "<group>"; };
+		13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = kic/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
+		19F6CBCC0A4E27FBF8BF4A61 /* libPods-kic-kicTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-kic-kicTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		3B4392A12AC88292D35C810B /* Pods-kic.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kic.debug.xcconfig"; path = "Target Support Files/Pods-kic/Pods-kic.debug.xcconfig"; sourceTree = "<group>"; };
+		5709B34CF0A7D63546082F79 /* Pods-kic.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kic.release.xcconfig"; path = "Target Support Files/Pods-kic/Pods-kic.release.xcconfig"; sourceTree = "<group>"; };
+		5B7EB9410499542E8C5724F5 /* Pods-kic-kicTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kic-kicTests.debug.xcconfig"; path = "Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests.debug.xcconfig"; sourceTree = "<group>"; };
+		5DCACB8F33CDC322A6C60F78 /* libPods-kic.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-kic.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = kic/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		89C6BE57DB24E9ADA2F236DE /* Pods-kic-kicTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kic-kicTests.release.xcconfig"; path = "Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests.release.xcconfig"; sourceTree = "<group>"; };
+		A75060D03500A85683F48E4E /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = kic/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
+		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+		ED56E5BB2C626F9D0031B9D9 /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = "<group>"; };
+		ED56E5BC2C626F9D0031B9D9 /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
+		ED56E5BD2C626F9D0031B9D9 /* FontAwesome6_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome6_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Regular.ttf"; sourceTree = "<group>"; };
+		ED56E5BE2C626F9D0031B9D9 /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
+		ED56E5BF2C626F9D0031B9D9 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
+		ED56E5C02C626F9D0031B9D9 /* FontAwesome6_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome6_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Solid.ttf"; sourceTree = "<group>"; };
+		ED56E5C12C626F9D0031B9D9 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
+		ED56E5C22C626F9D0031B9D9 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
+		ED56E5C32C626F9D0031B9D9 /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
+		ED56E5C42C626F9D0031B9D9 /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
+		ED56E5C52C626F9D0031B9D9 /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
+		ED56E5C62C626F9D0031B9D9 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; };
+		ED56E5C72C626F9D0031B9D9 /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
+		ED56E5C82C626F9D0031B9D9 /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
+		ED56E5C92C626F9D0031B9D9 /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
+		ED56E5CA2C626F9D0031B9D9 /* FontAwesome6_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = FontAwesome6_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome6_Brands.ttf"; sourceTree = "<group>"; };
+		ED56E5CB2C626F9D0031B9D9 /* Fontisto.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Fontisto.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf"; sourceTree = "<group>"; };
+		ED56E5CC2C626F9D0031B9D9 /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
+		ED56E5CD2C626F9D0031B9D9 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
+		ED8583612C634115003406E5 /* kic-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "kic-Bridging-Header.h"; sourceTree = "<group>"; };
+		ED8583622C634116003406E5 /* background.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = background.swift; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		00E356EB1AD99517003FC87E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7699B88040F8A987B510C191 /* libPods-kic-kicTests.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				0C80B921A6F3F58F76C31292 /* libPods-kic.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		00E356EF1AD99517003FC87E /* kicTests */ = {
+			isa = PBXGroup;
+			children = (
+				00E356F21AD99517003FC87E /* kicTests.m */,
+				00E356F01AD99517003FC87E /* Supporting Files */,
+			);
+			path = kicTests;
+			sourceTree = "<group>";
+		};
+		00E356F01AD99517003FC87E /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				00E356F11AD99517003FC87E /* Info.plist */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		13B07FAE1A68108700A75B9A /* kic */ = {
+			isa = PBXGroup;
+			children = (
+				ED56E5BA2C626F490031B9D9 /* Fonts */,
+				13B07FAF1A68108700A75B9A /* AppDelegate.h */,
+				13B07FB01A68108700A75B9A /* AppDelegate.mm */,
+				13B07FB51A68108700A75B9A /* Images.xcassets */,
+				13B07FB61A68108700A75B9A /* Info.plist */,
+				81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
+				13B07FB71A68108700A75B9A /* main.m */,
+				13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
+				A75060D03500A85683F48E4E /* PrivacyInfo.xcprivacy */,
+				ED8583622C634116003406E5 /* background.swift */,
+				ED8583612C634115003406E5 /* kic-Bridging-Header.h */,
+			);
+			name = kic;
+			sourceTree = "<group>";
+		};
+		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+				5DCACB8F33CDC322A6C60F78 /* libPods-kic.a */,
+				19F6CBCC0A4E27FBF8BF4A61 /* libPods-kic-kicTests.a */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Libraries;
+			sourceTree = "<group>";
+		};
+		83CBB9F61A601CBA00E9B192 = {
+			isa = PBXGroup;
+			children = (
+				13B07FAE1A68108700A75B9A /* kic */,
+				832341AE1AAA6A7D00B99B32 /* Libraries */,
+				00E356EF1AD99517003FC87E /* kicTests */,
+				83CBBA001A601CBA00E9B192 /* Products */,
+				2D16E6871FA4F8E400B85C8A /* Frameworks */,
+				BBD78D7AC51CEA395F1C20DB /* Pods */,
+			);
+			indentWidth = 2;
+			sourceTree = "<group>";
+			tabWidth = 2;
+			usesTabs = 0;
+		};
+		83CBBA001A601CBA00E9B192 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				13B07F961A680F5B00A75B9A /* kic.app */,
+				00E356EE1AD99517003FC87E /* kicTests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		BBD78D7AC51CEA395F1C20DB /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				3B4392A12AC88292D35C810B /* Pods-kic.debug.xcconfig */,
+				5709B34CF0A7D63546082F79 /* Pods-kic.release.xcconfig */,
+				5B7EB9410499542E8C5724F5 /* Pods-kic-kicTests.debug.xcconfig */,
+				89C6BE57DB24E9ADA2F236DE /* Pods-kic-kicTests.release.xcconfig */,
+			);
+			path = Pods;
+			sourceTree = "<group>";
+		};
+		ED56E5BA2C626F490031B9D9 /* Fonts */ = {
+			isa = PBXGroup;
+			children = (
+				ED56E5C92C626F9D0031B9D9 /* AntDesign.ttf */,
+				ED56E5C72C626F9D0031B9D9 /* Entypo.ttf */,
+				ED56E5CC2C626F9D0031B9D9 /* EvilIcons.ttf */,
+				ED56E5BB2C626F9D0031B9D9 /* Feather.ttf */,
+				ED56E5C52C626F9D0031B9D9 /* FontAwesome.ttf */,
+				ED56E5C12C626F9D0031B9D9 /* FontAwesome5_Brands.ttf */,
+				ED56E5BF2C626F9D0031B9D9 /* FontAwesome5_Regular.ttf */,
+				ED56E5C62C626F9D0031B9D9 /* FontAwesome5_Solid.ttf */,
+				ED56E5CA2C626F9D0031B9D9 /* FontAwesome6_Brands.ttf */,
+				ED56E5BD2C626F9D0031B9D9 /* FontAwesome6_Regular.ttf */,
+				ED56E5C02C626F9D0031B9D9 /* FontAwesome6_Solid.ttf */,
+				ED56E5CB2C626F9D0031B9D9 /* Fontisto.ttf */,
+				ED56E5BE2C626F9D0031B9D9 /* Foundation.ttf */,
+				ED56E5C42C626F9D0031B9D9 /* Ionicons.ttf */,
+				ED56E5C22C626F9D0031B9D9 /* MaterialCommunityIcons.ttf */,
+				ED56E5BC2C626F9D0031B9D9 /* MaterialIcons.ttf */,
+				ED56E5C82C626F9D0031B9D9 /* Octicons.ttf */,
+				ED56E5CD2C626F9D0031B9D9 /* SimpleLineIcons.ttf */,
+				ED56E5C32C626F9D0031B9D9 /* Zocial.ttf */,
+			);
+			name = Fonts;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		00E356ED1AD99517003FC87E /* kicTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "kicTests" */;
+			buildPhases = (
+				A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
+				00E356EA1AD99517003FC87E /* Sources */,
+				00E356EB1AD99517003FC87E /* Frameworks */,
+				00E356EC1AD99517003FC87E /* Resources */,
+				C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
+				F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				00E356F51AD99517003FC87E /* PBXTargetDependency */,
+			);
+			name = kicTests;
+			productName = kicTests;
+			productReference = 00E356EE1AD99517003FC87E /* kicTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+		13B07F861A680F5B00A75B9A /* kic */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "kic" */;
+			buildPhases = (
+				C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
+				13B07F871A680F5B00A75B9A /* Sources */,
+				13B07F8C1A680F5B00A75B9A /* Frameworks */,
+				13B07F8E1A680F5B00A75B9A /* Resources */,
+				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+				00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
+				E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = kic;
+			productName = kic;
+			productReference = 13B07F961A680F5B00A75B9A /* kic.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		83CBB9F71A601CBA00E9B192 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 1210;
+				TargetAttributes = {
+					00E356ED1AD99517003FC87E = {
+						CreatedOnToolsVersion = 6.2;
+						TestTargetID = 13B07F861A680F5B00A75B9A;
+					};
+					13B07F861A680F5B00A75B9A = {
+						LastSwiftMigration = 1540;
+					};
+				};
+			};
+			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "kic" */;
+			compatibilityVersion = "Xcode 12.0";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 83CBB9F61A601CBA00E9B192;
+			productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				13B07F861A680F5B00A75B9A /* kic */,
+				00E356ED1AD99517003FC87E /* kicTests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		00E356EC1AD99517003FC87E /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		13B07F8E1A680F5B00A75B9A /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				EDDB63C52C63674200AD1F9F /* AntDesign.ttf in Resources */,
+				EDDB63C62C63674200AD1F9F /* Entypo.ttf in Resources */,
+				EDDB63C72C63674200AD1F9F /* EvilIcons.ttf in Resources */,
+				EDDB63C82C63674200AD1F9F /* Feather.ttf in Resources */,
+				EDDB63C92C63674200AD1F9F /* FontAwesome.ttf in Resources */,
+				EDDB63CA2C63674200AD1F9F /* FontAwesome5_Brands.ttf in Resources */,
+				EDDB63CB2C63674200AD1F9F /* FontAwesome5_Regular.ttf in Resources */,
+				EDDB63CC2C63674200AD1F9F /* FontAwesome5_Solid.ttf in Resources */,
+				EDDB63CD2C63674200AD1F9F /* FontAwesome6_Brands.ttf in Resources */,
+				EDDB63CE2C63674200AD1F9F /* FontAwesome6_Regular.ttf in Resources */,
+				EDDB63CF2C63674200AD1F9F /* FontAwesome6_Solid.ttf in Resources */,
+				EDDB63D02C63674200AD1F9F /* Fontisto.ttf in Resources */,
+				EDDB63D12C63674200AD1F9F /* Foundation.ttf in Resources */,
+				EDDB63D22C63674200AD1F9F /* Ionicons.ttf in Resources */,
+				EDDB63D32C63674200AD1F9F /* MaterialCommunityIcons.ttf in Resources */,
+				EDDB63D42C63674200AD1F9F /* MaterialIcons.ttf in Resources */,
+				EDDB63D52C63674200AD1F9F /* Octicons.ttf in Resources */,
+				EDDB63D62C63674200AD1F9F /* SimpleLineIcons.ttf in Resources */,
+				EDDB63D72C63674200AD1F9F /* Zocial.ttf in Resources */,
+				81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
+				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+				8C5B8FFDD04E998A8479C881 /* PrivacyInfo.xcprivacy in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+			isa = PBXShellScriptBuildPhase;
+			alwaysOutOfDate = 1;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+				"$(SRCROOT)/.xcode.env.local",
+				"$(SRCROOT)/.xcode.env",
+			);
+			name = "Bundle React Native code and images";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
+		};
+		00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-kic-kicTests-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+		C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-kic-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+		C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-resources-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Copy Pods Resources";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-resources-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-kic/Pods-kic-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-resources-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Copy Pods Resources";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-resources-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-kic-kicTests/Pods-kic-kicTests-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		00E356EA1AD99517003FC87E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				00E356F31AD99517003FC87E /* kicTests.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		13B07F871A680F5B00A75B9A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				ED8583632C634116003406E5 /* background.swift in Sources */,
+				13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
+				13B07FC11A68108700A75B9A /* main.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 13B07F861A680F5B00A75B9A /* kic */;
+			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		00E356F61AD99517003FC87E /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-kic-kicTests.debug.xcconfig */;
+			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				INFOPLIST_FILE = kicTests/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				OTHER_LDFLAGS = (
+					"-ObjC",
+					"-lc++",
+					"$(inherited)",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/kic.app/kic";
+			};
+			name = Debug;
+		};
+		00E356F71AD99517003FC87E /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-kic-kicTests.release.xcconfig */;
+			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				COPY_PHASE_STRIP = NO;
+				INFOPLIST_FILE = kicTests/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				OTHER_LDFLAGS = (
+					"-ObjC",
+					"-lc++",
+					"$(inherited)",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/kic.app/kic";
+			};
+			name = Release;
+		};
+		13B07F941A680F5B00A75B9A /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-kic.debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CURRENT_PROJECT_VERSION = 2;
+				DEVELOPMENT_TEAM = NDN56USKZX;
+				ENABLE_BITCODE = NO;
+				INFOPLIST_FILE = kic/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.91;
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-ObjC",
+					"-lc++",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = org.reactjs.native.kic;
+				PRODUCT_NAME = kic;
+				SWIFT_OBJC_BRIDGING_HEADER = "kic-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Debug;
+		};
+		13B07F951A680F5B00A75B9A /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-kic.release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				CURRENT_PROJECT_VERSION = 2;
+				DEVELOPMENT_TEAM = NDN56USKZX;
+				INFOPLIST_FILE = kic/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.91;
+				OTHER_LDFLAGS = (
+					"$(inherited)",
+					"-ObjC",
+					"-lc++",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = org.reactjs.native.kic;
+				PRODUCT_NAME = kic;
+				SWIFT_OBJC_BRIDGING_HEADER = "kic-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
+				VERSIONING_SYSTEM = "apple-generic";
+			};
+			name = Release;
+		};
+		83CBBA201A601CBA00E9B192 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CC = "";
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				CXX = "";
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD = "";
+				LDPLUSPLUS = "";
+				LD_RUNPATH_SEARCH_PATHS = (
+					/usr/lib/swift,
+					"$(inherited)",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"\"$(SDKROOT)/usr/lib/swift\"",
+					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+					"\"$(inherited)\"",
+				);
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CPLUSPLUSFLAGS = (
+					"$(OTHER_CFLAGS)",
+					"-DFOLLY_NO_CONFIG",
+					"-DFOLLY_MOBILE=1",
+					"-DFOLLY_USE_LIBCPP=1",
+					"-DFOLLY_CFG_NO_COROUTINES=1",
+					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
+				);
+				OTHER_LDFLAGS = "$(inherited)  ";
+				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+				SDKROOT = iphoneos;
+				USE_HERMES = true;
+			};
+			name = Debug;
+		};
+		83CBBA211A601CBA00E9B192 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CC = "";
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				CXX = "";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+				LD = "";
+				LDPLUSPLUS = "";
+				LD_RUNPATH_SEARCH_PATHS = (
+					/usr/lib/swift,
+					"$(inherited)",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"\"$(SDKROOT)/usr/lib/swift\"",
+					"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+					"\"$(inherited)\"",
+				);
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_CPLUSPLUSFLAGS = (
+					"$(OTHER_CFLAGS)",
+					"-DFOLLY_NO_CONFIG",
+					"-DFOLLY_MOBILE=1",
+					"-DFOLLY_USE_LIBCPP=1",
+					"-DFOLLY_CFG_NO_COROUTINES=1",
+					"-DFOLLY_HAVE_CLOCK_GETTIME=1",
+				);
+				OTHER_LDFLAGS = "$(inherited)  ";
+				REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+				SDKROOT = iphoneos;
+				USE_HERMES = true;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "kicTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				00E356F61AD99517003FC87E /* Debug */,
+				00E356F71AD99517003FC87E /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "kic" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				13B07F941A680F5B00A75B9A /* Debug */,
+				13B07F951A680F5B00A75B9A /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "kic" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				83CBBA201A601CBA00E9B192 /* Debug */,
+				83CBBA211A601CBA00E9B192 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
 
ios/kic.xcodeproj/xcshareddata/xcschemes/kic.xcscheme (added)
+++ ios/kic.xcodeproj/xcshareddata/xcschemes/kic.xcscheme
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1210"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
+               BuildableName = "kic.app"
+               BlueprintName = "kic"
+               ReferencedContainer = "container:kic.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
+               BuildableName = "kicTests.xctest"
+               BlueprintName = "kicTests"
+               ReferencedContainer = "container:kic.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
+            BuildableName = "kic.app"
+            BlueprintName = "kic"
+            ReferencedContainer = "container:kic.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <CommandLineArguments>
+         <CommandLineArgument
+            argument = "IDEPreferLogStreaming=YES"
+            isEnabled = "YES">
+         </CommandLineArgument>
+      </CommandLineArguments>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
+            BuildableName = "kic.app"
+            BlueprintName = "kic"
+            ReferencedContainer = "container:kic.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
 
ios/kic.xcworkspace/contents.xcworkspacedata (added)
+++ ios/kic.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:kic.xcodeproj">
+   </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
+</Workspace>
 
ios/kic.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (added)
+++ ios/kic.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
 
ios/kic/AppDelegate.h (added)
+++ ios/kic/AppDelegate.h
@@ -0,0 +1,6 @@
+#import <RCTAppDelegate.h>
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : RCTAppDelegate
+
+@end
 
ios/kic/AppDelegate.mm (added)
+++ ios/kic/AppDelegate.mm
@@ -0,0 +1,31 @@
+#import "AppDelegate.h"
+
+#import <React/RCTBundleURLProvider.h>
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+  self.moduleName = @"kic";
+  // You can add your custom initial props in the dictionary below.
+  // They will be passed down to the ViewController used by React Native.
+  self.initialProps = @{};
+
+  return [super application:application didFinishLaunchingWithOptions:launchOptions];
+}
+
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+  return [self bundleURL];
+}
+
+- (NSURL *)bundleURL
+{
+#if DEBUG
+  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
+#else
+  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+#endif
+}
+
+@end
 
ios/kic/Images.xcassets/AppIcon.appiconset/1024.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/1024.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/120 1.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/120 1.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/120.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/120.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/180.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/180.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/40.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/40.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/58.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/58.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/60.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/60.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/80.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/80.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/87.png (Binary) (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/87.png
Binary file is not shown
 
ios/kic/Images.xcassets/AppIcon.appiconset/Contents.json (added)
+++ ios/kic/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,62 @@
+{
+  "images" : [
+    {
+      "filename" : "40.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "filename" : "60.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "20x20"
+    },
+    {
+      "filename" : "58.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "filename" : "87.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "29x29"
+    },
+    {
+      "filename" : "80.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "filename" : "120.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "40x40"
+    },
+    {
+      "filename" : "120 1.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "60x60"
+    },
+    {
+      "filename" : "180.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "60x60"
+    },
+    {
+      "filename" : "1024.png",
+      "idiom" : "ios-marketing",
+      "scale" : "1x",
+      "size" : "1024x1024"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
 
ios/kic/Images.xcassets/Contents.json (added)
+++ ios/kic/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
 
ios/kic/Info.plist (added)
+++ ios/kic/Info.plist
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>Send_Location_TA</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>$(MARKETING_VERSION)</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+    <key>NSAllowsArbitraryLoads</key>
+    <true/> <!-- 모든 HTTP 요청 허용 -->
+    <key>NSExceptionDomains</key>
+    <dict>
+        <key>takensoftai.iptime.org</key>
+        <dict>
+            <key>NSExceptionAllowsInsecureHTTPLoads</key>
+            <true/>
+            <key>NSExceptionMinimumTLSVersion</key>
+            <string>TLSv1.2</string>
+            <key>NSIncludesSubdomains</key>
+            <true/>
+        </dict>
+    </dict>
+</dict>
+	<key>NSAppleMusicUsageDescription</key>
+	<string>앱이 Apple Music에 접근하여 음악 재생 목록을 관리할 수 있도록 허용해주세요.</string>
+	<key>NSBluetoothAlwaysUsageDescription</key>
+	<string>앱이 Bluetooth 장치에 항상 연결될 수 있도록 허용해주세요.</string>
+	<key>NSBluetoothPeripheralUsageDescription</key>
+	<string>앱이 Bluetooth 장치에 접근하여 데이터를 송수신할 수 있도록 허용해주세요.</string>
+	<key>NSCalendarsFullAccessUsageDescription</key>
+	<string>앱이 캘린더에 완전히 접근하여 일정 관리를 도와줄 수 있도록 허용해주세요.</string>
+	<key>NSCalendarsUsageDescription</key>
+	<string>앱이 캘린더에 접근할 수 있도록 허용해주세요.</string>
+	<key>NSCalendarsWriteOnlyAccessUsageDescription</key>
+	<string>앱이 캘린더에 일정만 추가할 수 있도록 허용해주세요.</string>
+	<key>NSCameraUsageDescription</key>
+	<string>카메라에 접근할 수 있도록 허용해주세요.</string>
+	<key>NSContactsUsageDescription</key>
+	<string>앱이 연락처에 접근하여 연락처 정보를 제공할 수 있도록 허용해주세요.</string>
+	<key>NSFaceIDUsageDescription</key>
+	<string>앱이 Face ID를 사용하여 안전하게 인증할 수 있도록 허용해주세요.</string>
+	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
+	<string>앱이 사용자의 위치 정보를 항상 및 사용 중에 접근하여 위치 기반 서비스를 제공할 수 있도록 허용해주세요.</string>
+	<key>NSLocationAlwaysUsageDescription</key>
+	<string>앱이 백그라운드에서도 위치 접근을 허용합니다.</string>
+	<key>NSLocationTemporaryUsageDescriptionDictionary</key>
+	<dict>
+		<key>NearbyEvents</key>
+		<string>앱이 주변 이벤트를 찾기 위해 일시적으로 위치 데이터를 사용합니다.</string>
+	</dict>
+	<key>NSLocationWhenInUseUsageDescription</key>
+	<string>앱을 사용할 때 위치 접근을 허용합니다.</string>
+	<key>NSMicrophoneUsageDescription</key>
+	<string>앱이 마이크에 접근하여 음성을 녹음할 수 있도록 허용해주세요.</string>
+	<key>NSMotionUsageDescription</key>
+	<string>앱이 모션 데이터를 사용하여 사용자 활동을 추적할 수 있도록 허용해주세요.</string>
+	<key>NSPhotoLibraryAddUsageDescription</key>
+	<string>앱이 사진 라이브러리에 사진을 추가할 수 있도록 허용해주세요.</string>
+	<key>NSPhotoLibraryUsageDescription</key>
+	<string>앱이 사진 라이브러리에 접근하여 사진을 선택하거나 업로드할 수 있도록 허용해주세요.</string>
+	<key>NSRemindersFullAccessUsageDescription</key>
+	<string>앱이 미리 알림에 완전히 접근하여 일정 관리를 도와줄 수 있도록 허용해주세요.</string>
+	<key>NSSiriUsageDescription</key>
+	<string>앱이 Siri를 사용하여 음성 명령을 처리할 수 있도록 허용해주세요.</string>
+	<key>NSSpeechRecognitionUsageDescription</key>
+	<string>앱이 음성 인식을 사용하여 음성 명령을 처리할 수 있도록 허용해주세요.</string>
+	<key>NSUserTrackingUsageDescription</key>
+	<string>앱이 사용자 활동을 추적하여 맞춤형 광고를 제공할 수 있도록 허용해주세요.</string>
+	<key>UIAppFonts</key>
+	<array>
+		<string>AntDesign.ttf</string>
+		<string>Entypo.ttf</string>
+		<string>EvilIcons.ttf</string>
+		<string>Feather.ttf</string>
+		<string>FontAwesome.ttf</string>
+		<string>FontAwesome5_Brands.ttf</string>
+		<string>FontAwesome5_Regular.ttf</string>
+		<string>FontAwesome5_Solid.ttf</string>
+		<string>FontAwesome6_Brands.ttf</string>
+		<string>FontAwesome6_Regular.ttf</string>
+		<string>FontAwesome6_Solid.ttf</string>
+		<string>Foundation.ttf</string>
+		<string>Ionicons.ttf</string>
+		<string>MaterialIcons.ttf</string>
+		<string>MaterialCommunityIcons.ttf</string>
+		<string>SimpleLineIcons.ttf</string>
+		<string>Octicons.ttf</string>
+		<string>Zocial.ttf</string>
+		<string>Fontisto.ttf</string>
+	</array>
+	<key>UIBackgroundModes</key>
+	<array>
+		<string>location</string>
+	</array>
+	<key>UILaunchStoryboardName</key>
+	<string>LaunchScreen</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>arm64</string>
+	</array>
+	<key>UIStatusBarStyle</key>
+	<string></string>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UIViewControllerBasedStatusBarAppearance</key>
+	<false/>
+</dict>
+</plist>
 
ios/kic/LaunchScreen.storyboard (added)
+++ ios/kic/LaunchScreen.storyboard
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="kic" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
+                                <rect key="frame" x="0.0" y="202" width="375" height="43"/>
+                                <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
+                                <rect key="frame" x="0.0" y="626" width="375" height="21"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+                        <constraints>
+                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
+                            <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
+                            <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
+                            <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
+                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
+                            <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
+                        </constraints>
+                        <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="52.173913043478265" y="375"/>
+        </scene>
+    </scenes>
+</document>
 
ios/kic/PrivacyInfo.xcprivacy (added)
+++ ios/kic/PrivacyInfo.xcprivacy
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>NSPrivacyAccessedAPITypes</key>
+	<array>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>C617.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>CA92.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>35F9.1</string>
+			</array>
+		</dict>
+	</array>
+	<key>NSPrivacyCollectedDataTypes</key>
+	<array/>
+	<key>NSPrivacyTracking</key>
+	<false/>
+</dict>
+</plist>
 
ios/kic/main.m (added)
+++ ios/kic/main.m
@@ -0,0 +1,10 @@
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+  @autoreleasepool {
+    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+  }
+}
 
ios/kicTests/Info.plist (added)
+++ ios/kicTests/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>
 
ios/kicTests/kicTests.m (added)
+++ ios/kicTests/kicTests.m
@@ -0,0 +1,66 @@
+#import <UIKit/UIKit.h>
+#import <XCTest/XCTest.h>
+
+#import <React/RCTLog.h>
+#import <React/RCTRootView.h>
+
+#define TIMEOUT_SECONDS 600
+#define TEXT_TO_LOOK_FOR @"Welcome to React"
+
+@interface kicTests : XCTestCase
+
+@end
+
+@implementation kicTests
+
+- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
+{
+  if (test(view)) {
+    return YES;
+  }
+  for (UIView *subview in [view subviews]) {
+    if ([self findSubviewInView:subview matching:test]) {
+      return YES;
+    }
+  }
+  return NO;
+}
+
+- (void)testRendersWelcomeScreen
+{
+  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
+  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
+  BOOL foundElement = NO;
+
+  __block NSString *redboxError = nil;
+#ifdef DEBUG
+  RCTSetLogFunction(
+      ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
+        if (level >= RCTLogLevelError) {
+          redboxError = message;
+        }
+      });
+#endif
+
+  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
+    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
+    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
+
+    foundElement = [self findSubviewInView:vc.view
+                                  matching:^BOOL(UIView *view) {
+                                    if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
+                                      return YES;
+                                    }
+                                    return NO;
+                                  }];
+  }
+
+#ifdef DEBUG
+  RCTSetLogFunction(RCTDefaultLogFunction);
+#endif
+
+  XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
+  XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
+}
+
+@end
jest.config.js
--- jest.config.js
+++ jest.config.js
@@ -1,4 +1,3 @@
-module.exports = {
-  preset: 'react-native',
-  setupFiles: ["../../node_modules/react-native-gesture-handler/jestSetup.js"],
-};
+module.exports = {
+  preset: 'react-native',
+};
metro.config.js
--- metro.config.js
+++ metro.config.js
@@ -1,11 +1,11 @@
-const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
-
-/**
- * Metro configuration
- * https://reactnative.dev/docs/metro
- *
- * @type {import('metro-config').MetroConfig}
- */
-const config = {};
-
-module.exports = mergeConfig(getDefaultConfig(__dirname), config);
+const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
+
+/**
+ * Metro configuration
+ * https://reactnative.dev/docs/metro
+ *
+ * @type {import('metro-config').MetroConfig}
+ */
+const config = {};
+
+module.exports = mergeConfig(getDefaultConfig(__dirname), config);
package-lock.json
--- package-lock.json
+++ package-lock.json
This diff is too big to display.
package.json
--- package.json
+++ package.json
@@ -1,65 +1,58 @@
-{
-  "name": "Send_Location_TA",
-  "version": "0.0.1",
-  "private": true,
-  "scripts": {
-    "android": "react-native run-android",
-    "ios": "react-native run-ios",
-    "lint": "eslint .",
-    "start": "react-native start",
-    "test": "jest",
-    "postinstall": "react-native setup-ios-permissions && pod-install"
-  },
-  "dependencies": {
-    "@react-native-async-storage/async-storage": "^1.23.1",
-    "@react-native-community/geolocation": "^3.3.0",
-    "@react-navigation/native": "^6.1.17",
-    "@react-navigation/stack": "^6.4.1",
-    "@sayem314/react-native-keep-awake": "^1.2.4",
-    "axios": "^1.7.2",
-    "base64-js": "^1.5.1",
-    "crypto-js": "^4.2.0",
-    "install": "^0.13.0",
-    "react": "18.2.0",
-    "react-native": "^0.74.4",
-    "react-native-background-actions": "^4.0.0",
-    "react-native-chart-kit": "^6.12.0",
-    "react-native-fs": "^2.20.0",
-    "react-native-geolocation-service": "^5.3.1",
-    "react-native-gesture-handler": "^2.17.1",
-    "react-native-gifted-charts": "^1.4.10",
-    "react-native-linear-gradient": "^2.8.3",
-    "react-native-permissions": "^4.1.5",
-    "react-native-reanimated": "^3.11.0",
-    "react-native-safe-area-context": "^4.10.1",
-    "react-native-screens": "^3.31.1",
-    "react-native-shadow-2": "^7.1.0",
-    "react-native-svg": "^15.3.0",
-    "react-native-vector-icons": "^10.1.0",
-    "react-native-vision-camera": "^4.0.5"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.20.0",
-    "@babel/plugin-transform-export-namespace-from": "^7.24.6",
-    "@babel/preset-env": "^7.20.0",
-    "@babel/runtime": "^7.20.0",
-    "@react-native/babel-preset": "0.74.83",
-    "@react-native/eslint-config": "0.74.83",
-    "@react-native/metro-config": "0.74.83",
-    "@react-native/typescript-config": "0.74.83",
-    "@types/react": "^18.2.6",
-    "@types/react-native-simple-radio-button": "^2.7.7",
-    "@types/react-native-svg-charts": "^5.0.16",
-    "@types/react-native-vector-icons": "^6.4.18",
-    "@types/react-test-renderer": "^18.0.0",
-    "babel-jest": "^29.6.3",
-    "eslint": "^8.19.0",
-    "jest": "^29.6.3",
-    "prettier": "2.8.8",
-    "react-test-renderer": "18.2.0",
-    "typescript": "^5.0.4"
-  },
-  "engines": {
-    "node": ">=18"
-  }
-}
+{
+  "name": "kic",
+  "version": "0.0.1",
+  "private": true,
+  "scripts": {
+    "android": "react-native run-android",
+    "ios": "react-native run-ios",
+    "lint": "eslint .",
+    "start": "react-native start",
+    "test": "jest"
+  },
+  "dependencies": {
+    "@bam.tech/react-native-image-resizer": "^3.0.10",
+    "@react-native-async-storage/async-storage": "^1.23.1",
+    "@react-navigation/stack": "^6.4.1",
+    "@sayem314/react-native-keep-awake": "^1.2.4",
+    "axios": "^1.7.2",
+    "crypto-js": "^4.2.0",
+    "react": "18.2.0",
+    "react-native": "0.74.5",
+    "react-native-chart-kit": "^6.12.0",
+    "react-native-exif": "^0.5.0",
+    "react-native-fs": "^2.20.0",
+    "react-native-geolocation-service": "^5.3.1",
+    "react-native-gesture-handler": "^2.17.1",
+    "react-native-gifted-charts": "^1.4.10",
+    "react-native-linear-gradient": "^2.8.3",
+    "react-native-paper": "^5.12.5",
+    "react-native-permissions": "^4.1.5",
+    "react-native-reanimated": "^3.11.0",
+    "react-native-safe-area-context": "^4.10.1",
+    "react-native-screens": "^3.31.1",
+    "react-native-shadow-2": "^7.1.0",
+    "react-native-svg": "^15.7.1",
+    "react-native-vector-icons": "^10.1.0",
+    "react-native-vision-camera": "^4.0.5"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.20.0",
+    "@babel/preset-env": "^7.20.0",
+    "@babel/runtime": "^7.20.0",
+    "@react-native/babel-preset": "0.74.87",
+    "@react-native/eslint-config": "0.74.87",
+    "@react-native/metro-config": "0.74.87",
+    "@react-native/typescript-config": "0.74.87",
+    "@types/react": "^18.2.6",
+    "@types/react-test-renderer": "^18.0.0",
+    "babel-jest": "^29.6.3",
+    "eslint": "^8.19.0",
+    "jest": "^29.6.3",
+    "prettier": "2.8.8",
+    "react-test-renderer": "18.2.0",
+    "typescript": "5.0.4"
+  },
+  "engines": {
+    "node": ">=18"
+  }
+}
react-native.config.js
--- react-native.config.js
+++ react-native.config.js
@@ -1,9 +1,9 @@
 module.exports = {
-    dependencies: {
-      'react-native-vector-icons': {
-        platforms: {
-          ios: null,
-        },
+  dependencies: {
+    "react-native-vector-icons": {
+      platforms: {
+        ios: null,
       },
     },
-  };
(파일 끝에 줄바꿈 문자 없음)
+  },
+};
(파일 끝에 줄바꿈 문자 없음)
src/api/ApiUtils.js
--- src/api/ApiUtils.js
+++ src/api/ApiUtils.js
@@ -3,11 +3,43 @@
 
 // API 인스턴스 생성
 const apiInstance = axios.create({
-  baseURL: 'http://takensoftai.iptime.org:15857',
+  //baseURL: 'http://takensofttesting.iptime.org:27461',
+  baseURL: 'http://takensoftai.iptime.org:27461',
   headers: {
     'Content-Type': 'application/json',
-  }
+  },
 });
+
+// 토큰 가져오기 함수
+const getAccessToken = async (navigation) => {
+  try {
+    const tokenString = await AsyncStorage.getItem('token');
+    if (tokenString) {
+      const tokenObject = JSON.parse(tokenString);
+      const accessToken = tokenObject?.accessToken;
+     
+
+      if (!accessToken) {
+        await AsyncStorage.removeItem('token');
+        navigation.navigate('Login');
+        return null;
+      }
+
+      return accessToken;
+    } else {
+      console.log("토큰이 스토리지에 없습니다.");
+      navigation.navigate('Login');
+      return null;
+    }
+  } catch (error) {
+    console.error('토큰 처리 오류:', error.message);
+    navigation.navigate('Login');
+    return null;
+  }
+};
+
+
+
 
 const ApiUtils = {
   register: async (userData) => {
@@ -30,16 +62,83 @@
     }
   },
 
+  saveTripLog: async (data, navigation) => {
+    try {
+      // getAccessToken 함수 호출
+      const accessToken = await getAccessToken(navigation);
+
+      // accessToken이 없으면 중단
+      if (!accessToken) return;
+
+      // 데이터 전송
+      const response = await apiInstance.post('/action/gps_update', data, {
+        headers: {
+          'Content-Type': 'application/json',
+          Authorization: accessToken, // 토큰을 헤더에 포함
+        },
+      });
+
+      return response.data;
+    } catch (error) {
+      console.error('save trip log error:', error.response?.status, error.response?.data || error.message);
+      throw error.response?.data || error;
+    }
+  },
+
+  saveResult: async (result, navigation) => {
+    try {
+      // getAccessToken 함수 호출
+      const accessToken = await getAccessToken(navigation);
+
+      // accessToken이 없으면 중단
+      if (!accessToken) return;
+
+      const response = await apiInstance.post('/action/trip_and_score_update', result, {
+        headers: {
+          'Content-Type': 'application/json',
+          Authorization:  accessToken, 
+        },
+      });
+      return response.data;
+    } catch (error) {
+      console.error('result save error:', error.response?.status, error.response?.data || error.message);
+      throw error.response?.data || error;
+    }
+  },
+
+  getHistory: async (result, navigation) => {
+    try {
+      // getAccessToken 함수 호출
+      const accessToken = await getAccessToken(navigation);
+
+      // accessToken이 없으면 중단
+      if (!accessToken) return;
+
+      const response = await apiInstance.post('/action/get_history', result, {
+        headers: {
+          'Content-Type': 'application/json',
+          Authorization:  accessToken, 
+        },
+      });
+      console.log(response.data.data)
+      return response.data;
+    } catch (error) {
+      console.error('getHistory error:', error.response?.status, error.response?.data || error.message);
+      throw error.response?.data || error;
+    }
+  },
+
+  // 외부 API
   uploadPhoto: async (uri) => {
     const formData = new FormData();
-    formData.append('photo', {
+    formData.append('file', {
       uri,
       type: 'image/jpeg',
       name: 'photo.jpg',
     });
 
     try {
-      const response = await apiInstance.post('/upload', formData, {
+      const response = await apiInstance.post('http://121.181.165.130:8077/predict', formData, {
         headers: {
           'Content-Type': 'multipart/form-data',
         },
@@ -51,47 +150,21 @@
     }
   },
 
-  sendTripLog: async (data, navigation) => {
-    console.log(data);
+  sendTripLog: async (data) => {
+    console.log("보낸값",data)
     try {
-      // AsyncStorage에서 토큰 가져오기
-      const tokenString = await AsyncStorage.getItem('token');
-      if (tokenString) {
-        const tokenObject = JSON.parse(tokenString);
-        const accessToken = tokenObject.accessToken;
-  
-        if (!accessToken) {
-          await AsyncStorage.removeItem('token');
-          // 로그인 페이지로 리디렉션
-          navigation.navigate('Login');
-          return;
-        }
-  
-        // 데이터 전송
-        try {
-          const response = await apiInstance.post('/action/gps_update', data, {
-            headers: {
-              'Content-Type': 'application/json',
-              Authorization: `${accessToken}`, // Bearer 스키마를 사용하도록 수정
-            },
-          });
-          return response.data;
-        } catch (error) {
-          console.error('Send trip log error:', error.response?.status, error.response?.data || error.message);
-          throw error.response?.data || error;
-        }
-      } else {
-        console.log("토큰이 스토리지에 없습니다.");
-        // 로그인 페이지로 리디렉션
-        navigation.navigate('Login');
-      }
+      const response = await axios.post('http://121.181.165.130:8077/calculate_safety_score', data, {
+        headers: {
+          'Content-Type': 'application/json',
+        },
+      });
+      console.log("결과값",response.data)
+      return response.data;
     } catch (error) {
-      console.error('Token retrieval error:', error.message);
-      // 로그인 페이지로 리디렉션
-      navigation.navigate('Login');
+      console.error('Send trip log error:', error.response?.status, error.response?.data || error.message);
+      throw error.response?.data || error;
     }
-  }
-  
+  },
 };
 
 export default ApiUtils;
 
src/asset/helmet_off.png (Binary) (added)
+++ src/asset/helmet_off.png
Binary file is not shown
 
src/asset/helmet_on.png (Binary) (added)
+++ src/asset/helmet_on.png
Binary file is not shown
 
src/context/AuthContext.js (added)
+++ src/context/AuthContext.js
@@ -0,0 +1,62 @@
+import React, { createContext, useState, useEffect } from 'react';
+import AsyncStorage from '@react-native-async-storage/async-storage';
+import { useLocation } from './LocationProvider';
+
+export const AuthContext = createContext();
+
+export const AuthProvider = ({ children }) => {
+  const [isLoggedIn, setIsLoggedIn] = useState(false);
+  const [loading, setLoading] = useState(true);
+  const { startLocationTracking } = useLocation();
+
+  useEffect(() => {
+    const checkToken = async () => {
+      try {
+        const tokenString = await AsyncStorage.getItem('token');
+        if (tokenString) {
+          // Token이 존재하면 로그인 상태를 true로 설정
+          setIsLoggedIn(true);
+          // Token이 존재할 때 위치 추적 시작
+          startLocationTracking();
+        } else {
+          // Token이 없으면 로그인 상태를 false로 설정
+          setIsLoggedIn(false);
+        }
+      } catch (error) {
+        // Token을 가져오는 도중 에러가 발생하면 에러를 콘솔에 출력
+        console.error('Token check error:', error);
+        setIsLoggedIn(false);
+      } finally {
+        // Token 확인이 끝난 후에는 로딩 상태를 false로 설정
+        setLoading(false);
+      }
+    };
+
+    // 컴포넌트가 마운트될 때 checkToken 함수를 호출
+    checkToken();
+  }, []);
+
+  const login = async (token) => {
+    try {
+      await AsyncStorage.setItem('token', JSON.stringify({ accessToken: token }))
+      setIsLoggedIn(true);
+    } catch (error) {
+      console.error('Login error:', error);
+    }
+  };
+
+  const logout = async () => {
+    try {
+      await AsyncStorage.removeItem('token');
+      setIsLoggedIn(false);
+    } catch (error) {
+      console.error('Logout error:', error);
+    }
+  };
+
+  return (
+    <AuthContext.Provider value={{ isLoggedIn, loading, login, logout }}>
+      {children}
+    </AuthContext.Provider>
+  );
+};
 
src/context/LocationProvider.js (added)
+++ src/context/LocationProvider.js
@@ -0,0 +1,82 @@
+import React, { createContext, useState, useContext, useEffect } from 'react';
+import Geolocation from 'react-native-geolocation-service';
+
+const LocationContext = createContext();
+
+export const LocationProvider = ({ children }) => {
+  const [watchId, setWatchId] = useState(null);
+  const [locationData, setLocationData] = useState({ latitude: [], longitude: [], timestamp: [] });
+
+  useEffect(() => {
+    // 컴포넌트 언마운트 시 위치 감시 중단
+    return () => {
+      if (watchId !== null) {
+        Geolocation.clearWatch(watchId);
+        console.log('위치서비스 종료');
+      }
+    };
+  }, []);
+
+  const startLocationTracking = () => {
+    if (watchId !== null) {
+      Geolocation.clearWatch(watchId); // 기존 감시 중단
+    }
+
+    const id = Geolocation.watchPosition(
+      (position) => {
+        const { latitude, longitude } = position.coords;
+        const time = new Date().toISOString();
+        const timestamp = formatDate(time);
+
+        console.log('위치 업데이트:', { latitude, longitude, timestamp });
+
+        setLocationData((prevData) => ({
+          latitude: [...prevData.latitude, latitude],
+          longitude: [...prevData.longitude, longitude],
+          timestamp: [...prevData.timestamp, timestamp],
+        }));
+      },
+      (error) => {
+        console.error('위치 감시 중 오류:', error);
+      },
+      {
+        enableHighAccuracy: true,
+        distanceFilter: 0,
+        interval: 1000,
+        fastestInterval: 1000,
+        forceRequestLocation: true,
+      }
+    );
+
+    setWatchId(id);
+  };
+
+  // const stopLocationTracking = () => {
+  //   if (watchId !== null) {
+  //     Geolocation.clearWatch(watchId); // 감시 중단
+  //     setWatchId(null); // watchId 초기화
+  //     console.log('위치 추적 중단');
+  //   }
+  // };
+
+  const formatDate = (time) => {
+    const date = new Date(time);
+    const year = date.getFullYear();
+    const month = `0${date.getMonth() + 1}`.slice(-2);
+    const day = `0${date.getDate()}`.slice(-2);
+    const hours = `0${date.getHours()}`.slice(-2);
+    const minutes = `0${date.getMinutes()}`.slice(-2);
+    const seconds = `0${date.getSeconds()}`.slice(-2);
+    const milliseconds = `00${date.getMilliseconds()}`.slice(-3);
+
+    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
+  };
+
+  return (
+    <LocationContext.Provider value={{ startLocationTracking, locationData, setLocationData }}>
+      {children}
+    </LocationContext.Provider>
+  );
+};
+
+export const useLocation = () => useContext(LocationContext);
src/screen/AgreementScreen.js
--- src/screen/AgreementScreen.js
+++ src/screen/AgreementScreen.js
@@ -18,14 +18,14 @@
     id: '',
     password: '',
     email: '',
-    sex: null,
+    // sex: null,
     phone: '',
   });
 
-  const radio_props = [
-    { label: '여성', value: '여성' },
-    { label: '남성', value: '남성' },
-  ];
+  // const radio_props = [
+  //   { label: '여성', value: '여성' },
+  //   { label: '남성', value: '남성' },
+  // ];
 
   const handleInputChange = (field, value) => {
     setAgreement(prevAgreement => ({
@@ -93,7 +93,7 @@
             onChangeText={text => handleInputChange('email', text)}
           />
         </View>
-        <View style={styles.formGroup}>
+        {/* <View style={styles.formGroup}>
           <Text style={styles.inputLabel}>성별</Text>
           <View style={styles.radioForm}>
             {radio_props.map((radio, index) => (
@@ -109,7 +109,7 @@
               </RadioButton>
             ))}
           </View>
-        </View>
+        </View> */}
         <View style={styles.formGroup}>
           <Text style={styles.inputLabel}>전화번호</Text>
           <TextInput
@@ -143,6 +143,7 @@
     color: '#007AFF',
     fontWeight: 'bold',
     marginVertical: 20,
+    padding:15
   },
   formGroup: {
     width: '100%',
src/screen/AnalysisScreen.js
--- src/screen/AnalysisScreen.js
+++ src/screen/AnalysisScreen.js
@@ -1,64 +1,73 @@
 import { StyleSheet, View, Text, Image } from 'react-native';
 import React from 'react';
-import AnalysisComponent from '../component/AnalysisComponent';
 
-// 더미데이터
-const data = {
-  score: 95,
-  distance: 36,
-  time: 100,
-};
+export default function AnalysisScreen({ route }) {
+  const { result } = route.params;
 
-export default function AnalysisScreen() {
+  console.log(result.helmet_on);
+
+  // 운행 거리를 km 혹은 m로 변환하는 함수
+  const formatDistance = (distance) => {
+    if (distance >= 1000) {
+      return (distance / 1000).toFixed(2) + ' km'; // 소수점 2자리까지 표시
+    } else {
+      return distance.toFixed(2) + ' m';
+    }
+  };
+
   return (
     <View style={styles.container}>
-      <Score score={data.score} distance={data.distance} time={data.time} />
-      <View style={styles.totalBoxView}>
-        <TotalBox distance={data.distance} />
-        <TotalBox time={data.time} />
-      </View>
-      <View style={styles.summaryContainer}>
-        <AnalysisComponent />
-      </View>
-    </View>
-  );
-}
 
-// 운행 점수 컴포넌트
-function Score({ score }) {
-  return (
-    <View style={styles.scoreContainer}>
-      <View style={styles.scoreTextBox}>
-        <Text style={styles.scoreText}>'이용자'님의 운행 점수</Text>
-        <Text style={styles.score}>
-          <Text style={styles.boldText}>{score}</Text> 점
-        </Text>
-      </View>
-      <Image source={require('../asset/bicycle.png')} style={styles.image} />
-    </View>
-  );
-}
+      <View style={styles.scoreContainer}>
+        {/* 안전운행 점수 */}
+        <View style={styles.scoreSection}>
+          <Text style={styles.sectionTitle}>안전운행 점수</Text>
+          <Text style={styles.scoreText}>{result.final_score}</Text>
+        </View>
 
-// 총 이동거리, 주행시간 컴포넌트
-function TotalBox({ distance, time }) {
-  return (
-    <View style={styles.totalBoxContainer}>
-      <View style={styles.totalBoxLabelContainer}>
-        {distance !== undefined ? (
-          <>
-            <Text style={styles.totalBoxLabel}>총 이동거리</Text>
-            <Text style={styles.totalBoxValue}>
-              {distance} <Text style={styles.totalBoxLabel}> km</Text>
-            </Text>
-          </>
-        ) : (
-          <>
-            <Text style={styles.totalBoxLabel}>총 주행시간</Text>
-            <Text style={styles.totalBoxValue}>
-              {time} <Text style={styles.totalBoxLabel}> 시간</Text>
-            </Text>
-          </>
-        )}
+        {/* 운행 거리 */}
+        <View style={styles.helmetSection}>
+          <Text style={styles.distanceTitle}>운행 거리</Text>
+          <Text style={styles.distanceValue}>{formatDistance(result.total_distance_m)}</Text>
+        </View>
+
+        {/* 안전모 착용 여부 */}
+        <View style={styles.helmetSection}>
+          <Text style={styles.sectionTitle}>안전모 착용 여부</Text>
+          {
+            result.helmet_on === "true" ?
+              <Image
+                source={require('../asset/helmet_on.png')}
+                style={styles.helmetImage}
+                alt="Helmet On"
+              /> :
+              <Image
+                source={require('../asset/helmet_off.png')}
+                style={styles.helmetImage}
+                alt="Helmet Off"
+              />
+          }
+        </View>
+      </View>
+
+      {/* 급가속, 급감속, 급발진, 급정지 - 4분할 박스 */}
+      <View style={styles.boxContainer}>
+        <View style={styles.halfBox}>
+          <Text style={styles.boxTitle}>급가속</Text>
+          <Text style={styles.boxValue}>{result.abrupt_acceleration_count}</Text>
+        </View>
+        <View style={styles.halfBox}>
+          <Text style={styles.boxTitle}>급감속</Text>
+          <Text style={styles.boxValue}>{result.abrupt_deceleration_count}</Text>
+        </View>
+        <View style={styles.halfBox}>
+          <Text style={styles.boxTitle}>급발진</Text>
+          <Text style={styles.boxValue}>{result.abrupt_start_count}</Text>
+        </View>
+        <View style={styles.halfBox}>
+          <Text style={styles.boxTitle}>급정지</Text>
+          <Text style={styles.boxValue}>{result.abrupt_stop_count}</Text>
+        </View>
       </View>
     </View>
   );
@@ -67,73 +76,98 @@
 const styles = StyleSheet.create({
   container: {
     flex: 1,
-    backgroundColor: '#ffffff',
+    justifyContent: 'center', // 수직 가운데 정렬
+    alignItems: 'center', // 수평 가운데 정렬
+    backgroundColor: '#f7f7f7',
     padding: 20,
   },
   scoreContainer: {
     width: '100%',
-    marginTop: 20,
-    backgroundColor: '#5488FF',
-    borderRadius: 10,
-    paddingVertical: 15,
-    paddingHorizontal: 20,
-    flexDirection: 'row',
-    alignItems: 'center',
-    justifyContent: 'space-between',
   },
-  scoreTextBox: {
-    flexDirection: 'column',
-    justifyContent: 'space-between',
-  },
-  scoreText: {
-    fontSize: 20,
-    color: '#ffffff',
-  },
-  boldText: {
-    fontSize: 65,
-    fontWeight: 'bold',
-  },
-  score: {
-    color: '#ffffff',
-    fontSize: 40,
-    fontWeight: 'bold',
-  },
-  image: {
-    width: 120,
-    height: 130,
-    marginLeft: 10,
-  },
-  totalBoxView: {
-    flexDirection: 'row',
-    justifyContent: 'space-between',
-    flexWrap: 'wrap',
-  },
-  totalBoxContainer: {
-    marginVertical: 20,
-    paddingHorizontal: 10,
-    paddingVertical: 10,
+  scoreSection: {
+    padding: 20,
+    marginBottom: 20,
+    alignItems: 'center', // 가운데 정렬
     backgroundColor: '#ffffff',
     borderRadius: 10,
-    elevation: 5,
-    width: '48%',
+    shadowColor: '#000',
+    shadowOffset: { width: 0, height: 2 },
+    shadowOpacity: 0.1,
+    shadowRadius: 5,
+    elevation: 3, // Android에서 그림자 효과
   },
-  totalBoxLabelContainer: {
-    flexDirection: 'column',
-    justifyContent: 'space-between',
-    alignItems: 'flex-start',
+  sectionTitle: {
+    fontSize: 18,
+    fontWeight: 'bold',
+    marginBottom: 10,
+    color: '#333',
   },
-  totalBoxLabel: {
-    color: '#000000',
-    fontSize: 16,
+  scoreText: {
+    fontSize: 72, // 3배 크기
+    fontWeight: '600',
+    color: '#007AFF',
   },
-  totalBoxValue: {
-    color: '#5488FF',
+  distanceContainer: {
+    flexDirection: 'row', // 수평 정렬
+    justifyContent: 'space-between', // 공간을 양쪽에 배치
+    alignItems: 'center',
+    padding: 20,
+    marginBottom: 20,
+  },
+  distanceTitle: {
+    fontSize: 18,
+    fontWeight: 'bold',
+    color: '#333',
+  },
+  distanceValue: {
     fontSize: 24,
     fontWeight: '600',
-    textAlign: 'left',
+    color: '#007AFF',
   },
-  summaryContainer: {
-    flex: 4,
-    marginTop: 10,
+  helmetSection: {
+    padding: 20,
+    marginBottom: 20,
+    flexDirection: 'row', // 수평 정렬
+    justifyContent: 'space-between', // 양쪽 끝에 배치
+    alignItems: 'center',
+    backgroundColor: '#ffffff',
+    borderRadius: 10,
+    shadowColor: '#000',
+    shadowOffset: { width: 0, height: 2 },
+    shadowOpacity: 0.1,
+    shadowRadius: 5,
+    elevation: 3, // Android에서 그림자 효과
+  },
+  boxContainer: {
+    flexDirection: 'row',
+    flexWrap: 'wrap',
+    justifyContent: 'space-between',
+    width: '100%',
+    marginBottom: 20,
+  },
+  halfBox: {
+    backgroundColor: '#ffffff',
+    width: '48%',
+    padding: 20,
+    borderRadius: 10,
+    marginBottom: 10,
+    alignItems: 'center',
+    justifyContent: 'center',
+    shadowColor: '#000',
+    shadowOffset: { width: 0, height: 2 },
+    shadowOpacity: 0.1,
+    shadowRadius: 5,
+    elevation: 3, // Android에서 그림자 효과
+  },
+  boxTitle: {
+    fontSize: 16,
+    fontWeight: 'bold',
+    marginBottom: 8,
+    color: '#333',
+  },
+  boxValue: {
+    fontSize: 20,
+    fontWeight: '600',
+    color: '#007AFF',
   },
 });
src/screen/CameraScreen.js
--- src/screen/CameraScreen.js
+++ src/screen/CameraScreen.js
@@ -2,6 +2,7 @@
 import { View, Button, StyleSheet, Alert, Text, Linking, TouchableOpacity } from 'react-native';
 import { Camera, useCameraDevice } from 'react-native-vision-camera';
 import { useNavigation } from '@react-navigation/native';
+import AsyncStorage from '@react-native-async-storage/async-storage';
 import Api from '../api/ApiUtils'
 
 const CameraScreen = () => {
@@ -15,7 +16,6 @@
     const checkPermission = async () => {
         try {
             const cameraPermission = await Camera.getCameraPermissionStatus();
-            console.log('Current permission status:', cameraPermission);
 
             if (cameraPermission === 'granted') {
                 setHasPermission(true);
@@ -50,8 +50,6 @@
     }, []);
 
     useEffect(() => {
-        // Debugging: Check if device is defined and ready
-        console.log('Device:', device);
         if (device) {
             setIsDeviceReady(true);
         } else {
@@ -66,23 +64,69 @@
                     flash: 'off',
                     qualityPrioritization: 'speed',
                 });
-                navigation.navigate('Gps');
-                // // API 호출을 비동기로 처리
-                // const response = await Api.uploadPhoto(uri);
     
-                // // 응답 상태 코드가 200일 경우 페이지 이동
-                // if (response.status === 200) {
-                //     navigation.navigate('Gps');
-                // } else {
-                //     // 상태 코드가 200이 아닐 경우 에러 메시지 표시
-                //     Alert.alert('업로드 실패', '사진 업로드에 실패했습니다.');
-                // }
+                const uri = photo.path;
+                // API 호출을 비동기로 처리
+                const response = await Api.uploadPhoto(uri);
+    
+                // 응답 상태 코드에 따른 처리
+                if (response.class_id !== 1) {
+                    let alertMessage = '';
+                    let alertTitle = '분석 실패';
+    
+                    // 클래스 ID에 따른 메시지 설정
+                    switch (response.class_id) {
+                        case 0:
+                            alertMessage = '헬멧을 찾을 수 없습니다. 사진을 다시 찍으시겠습니까? 아니면 감점을 받고 넘어가시겠습니까?';
+                            break;
+                        case 2:
+                            alertMessage = '사용자를 찾을 수 없습니다. 사진을 다시 찍으시겠습니까? 아니면 감점을 받고 넘어가시겠습니까?';
+                            break;
+                        default:
+                            alertMessage = '사진 분석에 실패했습니다. 사진을 다시 찍으시겠습니까? 아니면 감점을 받고 넘어가시겠습니까?';
+                    }
+    
+                    Alert.alert(
+                        alertTitle,
+                        alertMessage,
+                        [
+                            {
+                                text: '사진 다시 찍기',
+                                onPress: () => { } // 사진을 다시 찍는 함수 호출
+                            },
+                            {
+                                text: '다음으로 넘어가기',
+                                onPress: async () => { // onPress 핸들러를 async로 정의
+                                    try {
+                                        await AsyncStorage.setItem('safty_helmet_on', JSON.stringify(false));
+                                        // 점수 감점 처리 로직 (필요시 추가)
+                                        navigation.navigate('Gps'); // 다음 스텝으로 이동
+                                    } catch (error) {
+                                        console.error('AsyncStorage error:', error);
+                                    }
+                                },
+                                style: 'destructive'
+                            }
+                        ]
+                    );
+                } else {
+                    try {
+                        await AsyncStorage.setItem('safty_helmet_on', JSON.stringify(true));
+                        // 응답 상태 코드가 1일 경우 다음 페이지로 이동
+                        navigation.navigate('Gps');
+                    } catch (error) {
+                        console.error('AsyncStorage error:', error);
+                    }
+                }
             } catch (error) {
                 console.error('Photo capture error:', error.message);
                 Alert.alert('오류', '사진 캡처 중 오류가 발생했습니다.');
             }
         }
     };
+    
+    
+
 
     if (hasPermission === null) {
         return (
src/screen/GpsScreen.js
--- src/screen/GpsScreen.js
+++ src/screen/GpsScreen.js
@@ -1,27 +1,25 @@
-import React, { useState, useEffect } from 'react';
-import { View, Text, StyleSheet, Alert, TouchableOpacity, Platform } from 'react-native';
+import React, { useState, useEffect, useContext } from 'react';
+import { View, Text, StyleSheet, Alert, TouchableOpacity } from 'react-native';
 import AsyncStorage from '@react-native-async-storage/async-storage';
 import crypto from 'crypto-js';
 import Api from '../api/ApiUtils';
 import { useNavigation } from '@react-navigation/native';
 import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
-import Geolocation from 'react-native-geolocation-service';
 import { useKeepAwake } from '@sayem314/react-native-keep-awake';
-import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions';
+import { useLocation } from '../context/LocationProvider';
+import { AuthContext } from '../context/AuthContext';
 
 const GpsScreen = () => {
     const [isMeasuring, setIsMeasuring] = useState(false);
     const [elapsedTime, setElapsedTime] = useState(0);
     const [tripId, setTripId] = useState('');
     const [userId, setUserId] = useState('');
-    const [locationData, setLocationData] = useState({
-        latitude: [],
-        longitude: [],
-        timestamp: []
-    });
-    const [watchId, setWatchId] = useState(null);
+    const [safty, setSafty] = useState('');
+    const [startTimestamp, setStartTimestamp] = useState(null);
+    const { locationData, setLocationData } = useLocation();
+    const [resultData, setResultData] = useState(null);
     const navigation = useNavigation();
-    
+    const { logout } = useContext(AuthContext);
     useKeepAwake();
 
     useEffect(() => {
@@ -44,18 +42,19 @@
         const fetchUserId = async () => {
             try {
                 const storedUserId = await AsyncStorage.getItem('user_id');
+                const storedSafty = await AsyncStorage.getItem('safty_helmet_on');
+                //헬멧 착용여부 가져와서 저장
+                setSafty(storedSafty);
+                //사용자 아이디 가져와서 저장
                 if (storedUserId !== null) {
                     setUserId(storedUserId);
                 }
             } catch (error) {
-                console.error('Error fetching user_id from AsyncStorage:', error);
+                console.error('Error fetching user_id, safty_helmet_on from AsyncStorage:', error);
             }
         };
 
         fetchUserId();
-
-        // 처음 로드될 때 위치 권한 요청
-        requestLocationPermission();
     }, []);
 
     const generateTripId = () => {
@@ -65,117 +64,138 @@
         return sha256Hash;
     };
 
-    const requestLocationPermission = async () => {
-        if (Platform.OS === 'ios') {
-            const status = await request(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE);
-            console.log("권한요청:",status)
-            if (status !== RESULTS.GRANTED) {
-                Alert.alert('위치 권한 오류', '위치 권한을 허용해야 합니다.');
-            }
-        } else if (Platform.OS === 'android') {
-            const status = await request(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION);
-            if (status !== RESULTS.GRANTED) {
-                Alert.alert('위치 권한 오류', '위치 권한을 허용해야 합니다.');
-            }
-        }
-    };
-
-    const handleStart = async () => {
-        const permissionGranted = await check(
-            Platform.OS === 'ios' 
-            ? PERMISSIONS.IOS.LOCATION_WHEN_IN_USE 
-            : PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION
-        );
-
-        console.log(permissionGranted);
-
-        if (permissionGranted !== RESULTS.GRANTED) {
-            Alert.alert('위치 권한 오류', '위치 권한을 허용해야 합니다.');
-            requestLocationPermission();
-            return;
-        }
-        
-        try {
-            const newTripId = generateTripId();
-            setTripId(newTripId);
-            setIsMeasuring(true);
-            startLocationTracking();
-        } catch (error) {
-            console.error('Error starting location tracking:', error);
-            Alert.alert('오류', '위치 추적을 시작할 수 없습니다.');
-            setIsMeasuring(false);
-        }
+    const handleStart = () => {
+        const time = new Date().toISOString();
+        const timestamp = formatDate(time);
+        setStartTimestamp(timestamp);
+        setIsMeasuring(true);
+        setTripId(generateTripId());
     };
 
     const handleStop = async () => {
-        setIsMeasuring(false);
-        setElapsedTime(0);
-    
-        setLocationData({
-            latitude: [],
-            longitude: [],
-            timestamp: []
-        });
-    
-        if (watchId !== null) {
-            Geolocation.clearWatch(watchId);
-            setWatchId(null);
-        }
-    
-        try {
-            const dataToSend = {
-                user_id: userId,
-                trip_id: tripId,
-                trip_log: locationData,
-            };
-    
-            console.log('Data to send:', dataToSend);
-    
-            try {
-                const response = await Api.sendTripLog(dataToSend, navigation);
-                console.log("Response:", response);
-            } catch (error) {
-                Alert.alert('로그인 실패', error.message);
-            }
-    
-        } catch (error) {
-            console.error('Error stopping location tracking:', error);
-        }
+        Alert.alert(
+            '운행 종료',
+            '운행을 종료하시겠습니까?',
+            [
+                {
+                    text: '아니요',
+                    style: 'cancel',  // 취소 스타일
+                    onPress: () => {
+                        console.log('운행 계속');
+                    },
+                },
+                {
+                    text: '네',
+                    onPress: async () => {
+                        setIsMeasuring(false);
+                        setStartTimestamp(null);
+                        const time = new Date().toISOString();
+                        const stopTimestamp = formatDate(time); // 종료 타임스탬프 설정
+                        setElapsedTime(0);
+
+                        // 측정 시작 시점 이후의 위치 데이터만 필터링
+                        const filteredData = {
+                            latitude: [],
+                            longitude: [],
+                            timestamp: []
+                        };
+
+                        locationData.timestamp.forEach((time, index) => {
+                            if (time >= startTimestamp && time <= stopTimestamp) { // 범위 내의 데이터만 선택
+                                filteredData.latitude.push(locationData.latitude[index]);
+                                filteredData.longitude.push(locationData.longitude[index]);
+                                filteredData.timestamp.push(time);
+                            }
+                        });
+
+                        // 필터링된 데이터를 서버로 전송
+                        try {
+                            console.log("safty_helmet_on",safty)
+                            const dataToSend = {
+                                user_id: userId,
+                                trip_id: tripId,
+                                safty_helmet_on: safty,
+                                trip_log: filteredData,
+                            };
+
+                            // 한 개의 API로 데이터 전송
+                            try {
+                                const [send, save] = await Promise.all([
+                                    Api.sendTripLog(dataToSend),  // 첫 번째 API 호출
+                                    Api.saveTripLog(dataToSend, navigation)    // 두 번째 API 호출
+                                ]);
+                                
+                                
+                                // 응답 데이터를 기반으로 저장
+                                setResultData(send);
+
+                                try {
+                                    const saveResponse = await Api.saveResult(send);
+                                    console.log("Save Result Response:", saveResponse);
+                                } catch (error) {
+                                    Alert.alert('서버 오류', '결과를 저장할 수 없습니다.');
+                                }
+
+                                if (send.final_score) {
+                                    navigation.navigate('Analysis', { result: send });
+                                } else {
+                                    Alert.alert(
+                                        '분석결과 없음',
+                                        '운행 점수를 측정할 수 없습니다.',
+                                        [{ text: 'OK' }]
+                                    );
+                                }
+                            } catch (error) {
+                                Alert.alert('서버 오류', '서버로 데이터를 전송할 수 없습니다.');
+                            }
+
+                        } catch (error) {
+                            console.error('Error stopping location tracking:', error);
+                        }
+
+                        // 위치 데이터 초기화
+                        setLocationData({
+                            latitude: [],
+                            longitude: [],
+                            timestamp: []
+                        });
+                    },
+                },
+            ],
+            { cancelable: false }  // 이 옵션을 사용하면 alert 밖을 클릭해도 취소되지 않음
+        );
     };
 
-    const handleLogout = () => {
-        AsyncStorage.removeItem('token');
-        navigation.navigate('Login');
-        Alert.alert('로그아웃', '로그아웃되었습니다.');
-    };
+
+
+    const handleLogout = async () => {
+        await logout();
+        navigation.navigate('Login'); // Ensure 'Login' is defined in AuthNavigator
+      };
+
 
     const handleHistory = () => {
-        navigation.navigate('Analysis');
-        Alert.alert('히스토리', '히스토리 화면으로 이동합니다.');
+        if (resultData) {
+            Alert.alert(
+                '분석결과',
+                '분석결과 화면으로 이동합니다.',
+                [
+                    {
+                        text: 'OK',
+                        onPress: () => navigation.navigate('Analysis', { result: resultData })
+                    }
+                ]
+            );
+        } else {
+            Alert.alert(
+                '분석결과 없음',
+                '운행 분석 결과가 없습니다.',
+                [{ text: 'OK' }]
+            );
+        }
     };
 
-    const startLocationTracking = () => {
-        const id = Geolocation.watchPosition(
-            (position) => {
-                const { latitude, longitude } = position.coords;
-                const time = new Date().toISOString();
-                const timestamp = formatDate(time);
-                setLocationData(prevData => ({
-                    latitude: [...prevData.latitude, latitude],
-                    longitude: [...prevData.longitude, longitude],
-                    timestamp: [...prevData.timestamp, timestamp]
-                }));
 
-                console.log('위치 업데이트:', { latitude, longitude, timestamp: timestamp });
-            },
-            (error) => {
-                console.error('위치 감시 중 오류:', error);
-            },
-            { enableHighAccuracy: true, distanceFilter: 0, interval: 1000, fastestInterval: 1000, forceRequestLocation:true }
-        );
-
-        setWatchId(id);
-    };
 
     const formatTime = (seconds) => {
         const hours = Math.floor(seconds / 3600);
@@ -196,8 +216,6 @@
 
         return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;
     };
-
-   
 
     return (
         <View style={styles.container}>
@@ -246,7 +264,7 @@
         justifyContent: 'center',
         alignItems: 'center',
         padding: 20,
-        backgroundColor: '#F7F7F7', // 배경색
+        backgroundColor: '#F7F7F7',
     },
     timerContainer: {
         marginVertical: 30,
@@ -258,7 +276,7 @@
     time: {
         fontSize: 65,
         fontWeight: 'bold',
-        color: '#007AFF', // 타이머 색상
+        color: '#007AFF',
     },
     buttonRowContainer: {
         flexDirection: 'row',
@@ -273,13 +291,13 @@
         borderRadius: 10,
         marginHorizontal: 5,
         alignItems: 'center',
-        justifyContent: 'center', // 중앙 정렬
+        justifyContent: 'center',
     },
     startButton: {
-        backgroundColor: '#007AFF', // 시작 버튼 색상
+        backgroundColor: '#007AFF',
     },
     stopButton: {
-        backgroundColor: '#FF3B30', // 종료 버튼 색상
+        backgroundColor: '#FF3B30',
     },
     fullWidthButtonContainer: {
         width: '100%',
@@ -292,10 +310,10 @@
         alignItems: 'center',
     },
     logoutButton: {
-        backgroundColor: '#eeeeee', // 로그아웃 버튼 색상 (연한 무채색)
+        backgroundColor: '#eeeeee',
     },
     historyButton: {
-        backgroundColor: '#CAF4FF', // 분석결과 버튼 색상 (연한 파란색)
+        backgroundColor: '#CAF4FF',
     },
     buttonText: {
         color: '#FFFFFF',
@@ -305,7 +323,6 @@
     blackbuttonText: {
         fontWeight: 'bold',
         fontSize: 16,
-
     },
     fullWidthButtonText: {
         color: '#007AFF',
 
src/screen/History.js (added)
+++ src/screen/History.js
@@ -0,0 +1,266 @@
+import React, { useState, useEffect } from 'react';
+import { View, Text, TouchableOpacity, StyleSheet, ScrollView, ActivityIndicator, Dimensions } from 'react-native';
+import { BarChart } from 'react-native-gifted-charts';  // BarChart 컴포넌트 임포트
+import Api from '../api/ApiUtils';  // API 호출 함수 임포트
+import AsyncStorage from '@react-native-async-storage/async-storage';
+
+export default function History() {
+  const [selectedTab, setSelectedTab] = useState('safeDrivingScore');
+
+  return (
+    <View style={styles.container}>
+      {/* 탭 메뉴 */}
+      <View style={styles.tabContainer}>
+        <TouchableOpacity
+          style={[styles.tabButton, selectedTab === 'safeDrivingScore' && styles.activeTab]}
+          onPress={() => setSelectedTab('safeDrivingScore')}
+        >
+          <Text style={styles.tabText}>안전운행 점수</Text>
+        </TouchableOpacity>
+        <TouchableOpacity
+          style={[styles.tabButton, selectedTab === 'details' && styles.activeTab]}
+          onPress={() => setSelectedTab('details')}
+        >
+          <Text style={styles.tabText}>세부사항</Text>
+        </TouchableOpacity>
+      </View>
+
+      {/* 선택된 탭에 따른 컨텐츠 렌더링 */}
+      <View style={styles.contentContainer}>
+        {selectedTab === 'safeDrivingScore' ? <SafeDrivingScoreTab /> : <DetailsTab />}
+      </View>
+    </View>
+  );
+}
+
+function SafeDrivingScoreTab() {
+  const [hdata, sethData] = useState([]);
+  const [loading, setLoading] = useState(true);
+  const [error, setError] = useState(null);
+  const [chartData, setChartData] = useState();
+
+  useEffect(() => {
+    const fetchData = async () => {
+      try {
+        const storedUserId = await AsyncStorage.getItem('user_id');
+        const userData = { user_id: storedUserId };
+        const response = await Api.getHistory(userData);  // 실제 API 호출
+        const responseData = JSON.parse(response.data);
+
+        sethData(responseData);
+
+        const chartData = responseData.map(item => {
+          const date = new Date(item.timestamp); // Create a Date object from the timestamp
+          const formattedDate = date.toISOString().split('T')[0]; // Format it to YYYY-MM-DD
+          return {
+            label: formattedDate, // Use the formatted date as the label
+            value: item.final_score,
+          };
+        });
+
+        setChartData(chartData);
+
+        setLoading(false);
+      } catch (error) {
+        console.log(error);
+        setError(error);
+        setLoading(false);
+      }
+    };
+
+    fetchData();
+  }, []);
+
+  if (loading) {
+    return <ActivityIndicator size="large" color="#0000ff" />;
+  }
+
+  if (error) {
+    return (
+      <View>
+        <Text>데이터를 불러오는 중 오류가 발생했습니다.</Text>
+      </View>
+    );
+  }
+
+  // 데이터가 없는 경우
+  if (hdata.length === 0) {
+    return (
+      <View>
+        <Text>히스토리가 없습니다.</Text>
+      </View>
+    );
+  }
+
+  return (
+    <ScrollView>
+      <View  style={styles.padding}>
+        <BarChart
+          data={chartData}
+          initialSpacing={0}
+          spacing={100}
+          hideDataPoints
+          thickness={3}
+          hideRules
+          showVerticalLines
+          height={400}
+          disablePress
+          yAxisThickness={1} // 메인 y축
+          noOfSections={3} // 가로 회색줄 갯수
+          frontColor={'#177AD5'}
+          barWidth={50}
+          barBorderRadius={4}
+          maxValue={100}
+          autoShiftLabels={false}
+        />
+      </View>
+    </ScrollView>
+  );
+}
+
+function DetailsTab({ navigation }) {
+  const [hdata, sethData] = useState([]);
+  const [loading, setLoading] = useState(true);
+  const [error, setError] = useState(null);
+
+  useEffect(() => {
+    const fetchData = async () => {
+      try {
+        const storedUserId = await AsyncStorage.getItem('user_id');  // 필요한 파라미터
+        const userData = {
+          user_id: storedUserId,
+        };
+        const response = await Api.getHistory(userData, navigation);
+        const responseData = JSON.parse(response.data);
+        sethData(responseData);
+        setLoading(false);
+      } catch (error) {
+        console.log(error);
+        setError(error);
+        setLoading(false);
+      }
+    };
+
+    fetchData();
+  }, []);
+
+  if (loading) {
+    return <ActivityIndicator size="large" color="#0000ff" />;
+  }
+
+  if (error) {
+    return (
+      <View>
+        <Text>데이터를 불러오는 중 오류가 발생했습니다.</Text>
+      </View>
+    );
+  }
+
+  // 데이터가 없는 경우
+  if (hdata.length === 0) {
+    return (
+      <View>
+        <Text>히스토리가 없습니다.</Text>
+      </View>
+    );
+  }
+
+  return (
+    <ScrollView>
+      <View style={styles.table}>
+        <View style={styles.tableHeader}>
+          <Text style={styles.tableHeaderText}>날짜</Text>
+          <Text style={styles.tableHeaderText}>총점수</Text>
+          <Text style={styles.tableHeaderText}>급가속</Text>
+          <Text style={styles.tableHeaderText}>급감속</Text>
+          <Text style={styles.tableHeaderText}>급발진</Text>
+          <Text style={styles.tableHeaderText}>급정지</Text>
+          <Text style={styles.tableHeaderText}>안전모</Text>
+        </View>
+        {hdata.map((item, index) => (
+          <View key={index} style={styles.tableRow}>
+            <Text style={styles.tableCell}>{formatDate(item.timestamp)}</Text>
+            <Text style={styles.tableCell}>{item.final_score}</Text>
+            <Text style={styles.tableCell}>{item.abrupt_acceleration_count}</Text>
+            <Text style={styles.tableCell}>{item.abrupt_deceleration_count}</Text>
+            <Text style={styles.tableCell}>{item.abrupt_start_count}</Text>
+            <Text style={styles.tableCell}>{item.abrupt_stop_count}</Text>
+            <Text style={styles.tableCell}>{item.helmet_on ? "착용":"미착용"}</Text>
+          </View>
+        ))}
+      </View>
+    </ScrollView>
+  );
+}
+
+// 날짜 포맷팅 함수
+const formatDate = (timestamp) => {
+  const date = new Date(timestamp);
+  return date.toISOString().split('T')[0]; // YYYY-MM-DD 형식으로 변환
+};
+
+const styles = StyleSheet.create({
+  container: {
+    flex: 1,
+    backgroundColor:"#ffffff",
+    paddingBottom:10,
+    paddingTop:10
+  },
+  tabContainer: {
+    flexDirection: 'row',
+    borderBottomWidth: 1,
+    borderBottomColor: '#ccc',
+  },
+  tabButton: {
+    flex: 1,
+    padding: 16,
+    alignItems: 'center',
+  },
+  activeTab: {
+    borderBottomWidth: 2,
+    borderBottomColor: 'blue',
+  },
+  tabText: {
+    fontSize: 16,
+    fontWeight: 'bold',
+  },
+  contentContainer: {
+    flex: 1,
+    padding: 16,
+  },
+  title: {
+    fontSize: 24,
+    fontWeight: 'bold',
+    marginBottom: 16,
+  },
+  table: {
+    borderWidth: 1,
+    borderColor: '#ccc',
+  },
+  tableHeader: {
+    flexDirection: 'row',
+    backgroundColor: '#f1f1f1',
+  },
+  tableHeaderText: {
+    flex: 1,
+    padding: 8,
+    fontWeight: 'bold',
+    borderWidth: 1,
+    borderColor: '#ccc',
+    textAlign: 'center',
+  },
+  tableRow: {
+    flexDirection: 'row',
+  },
+  tableCell: {
+    flex: 1,
+    padding: 8,
+    borderWidth: 1,
+    borderColor: '#ccc',
+    textAlign: 'center',
+  },
+  padding:{
+    paddingTop:30,
+  }
+});
+
src/screen/LoginScreen.js
--- src/screen/LoginScreen.js
+++ src/screen/LoginScreen.js
@@ -1,31 +1,55 @@
-import React, { useState } from 'react';
-import { View, TextInput, Text, TouchableOpacity, Alert, StyleSheet } from 'react-native';
+import React, { useState, useEffect, useContext } from 'react';
+import { View, TextInput, Text, TouchableOpacity, Alert, StyleSheet, Platform } from 'react-native';
 import Api from '../api/ApiUtils';
 import AsyncStorage from '@react-native-async-storage/async-storage';
-import { useNavigation } from '@react-navigation/native';
+import { useNavigation, CommonActions } from '@react-navigation/native';
+import { request, PERMISSIONS, RESULTS } from 'react-native-permissions';
+import { useLocation } from '../context/LocationProvider'; // Context import
+import { AuthContext } from '../context/AuthContext';
 
 const LoginScreen = () => {
   const [userId, setUserId] = useState('');
   const [password, setPassword] = useState('');
   const navigation = useNavigation();
+  const { startLocationTracking } = useLocation();
+  const { login } = useContext(AuthContext);
+
+  useEffect(() => {
+    requestLocationPermission();
+  }, []);
+
+  const requestLocationPermission = async () => {
+    let status;
+    if (Platform.OS === 'ios') {
+      status = await request(PERMISSIONS.IOS.LOCATION_WHEN_IN_USE);
+    } else if (Platform.OS === 'android') {
+      status = await request(PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION);
+    }
+
+    if (status !== RESULTS.GRANTED) {
+      Alert.alert('위치 권한 오류', '위치 권한을 허용해야 합니다.');
+    }
+  };
 
   const handleLogin = async () => {
     const credentials = {
       id: userId,
       password: password,
     };
+
     try {
       const response = await Api.login(credentials);
       console.log(response);
-     if(response.result === 'success'){
-      await AsyncStorage.setItem('token', JSON.stringify({accessToken:response.token}));
-      await AsyncStorage.setItem('user_id', credentials.id);
-      navigation.navigate('Selection');
-     }else{
-      Alert.alert('로그인 정보를 다시 한번 확인해주세요.');
-     }
-      
-      
+      if (response.result === 'success') {
+        console.log('response::::',response)
+        await login(response.token);
+        await AsyncStorage.setItem('user_id', credentials.id);
+        // 로그인 성공 후 위치 수집 시작
+        startLocationTracking();
+        navigation.navigate('Selection');
+      } else {
+        Alert.alert('로그인 정보를 다시 한번 확인해주세요.');
+      }
     } catch (error) {
       Alert.alert('로그인 실패', error.message);
     }
@@ -53,9 +77,7 @@
         <Text style={styles.buttonText}>로그인</Text>
       </TouchableOpacity>
       <View style={styles.footer}>
-        <TouchableOpacity
-          onPress={() => navigation.navigate('Agreement')}
-        >
+        <TouchableOpacity onPress={() => navigation.navigate('Agreement')}>
           <Text style={styles.footerText}>회원가입</Text>
         </TouchableOpacity>
       </View>
@@ -86,7 +108,7 @@
     marginBottom: 15,
     backgroundColor: '#FFFFFF',
     fontSize: 16,
-    color:'#000'
+    color: '#000',
   },
   button: {
     backgroundColor: '#007AFF',
@@ -109,7 +131,6 @@
     color: '#666',
     marginBottom: 10,
   },
-
 });
 
 export default LoginScreen;
src/screen/SelectionScreen.js
--- src/screen/SelectionScreen.js
+++ src/screen/SelectionScreen.js
@@ -1,14 +1,28 @@
-import React from 'react';
+import React, { useContext } from 'react';
 import { View, Text, TouchableOpacity, StyleSheet, Platform } from 'react-native';
+import { AuthContext } from '../context/AuthContext';
+
 
 const SelectionScreen = ({ navigation }) => {
+  const { logout } = useContext(AuthContext);
+  const handleLogout = async () => {
+    await logout();
+    navigation.navigate('Login'); // Ensure 'Login' is defined in AuthNavigator
+  };
+
   return (
     <View style={styles.container}>
       <TouchableOpacity style={styles.startButton} onPress={() => navigation.navigate('Camera')}>
         <Text style={styles.buttonText}>운행시작</Text>
       </TouchableOpacity>
-      <TouchableOpacity style={styles.historyButton} onPress={() => navigation.navigate('Analysis')}>
+      <TouchableOpacity style={styles.historyButton} onPress={() => navigation.navigate('History')}>
         <Text style={styles.blueButtonText}>히스토리</Text>
+      </TouchableOpacity>
+      <TouchableOpacity
+        style={[styles.fullWidthButton, styles.logoutButton]}
+        onPress={handleLogout}
+      >
+        <Text style={styles.blackbuttonText}>로그아웃</Text>
       </TouchableOpacity>
     </View>
   );
@@ -30,7 +44,7 @@
     marginVertical: 10, // 버튼 간격
   },
   historyButton: {
-    backgroundColor: '#CAF4FF', 
+    backgroundColor: '#CAF4FF',
     borderRadius: 10,
     padding: 15,
     width: '80%', // 버튼 너비
@@ -48,6 +62,20 @@
     fontSize: 18,
     fontWeight: '600', // 텍스트 두께
   },
+  fullWidthButton: {
+    paddingVertical: 15,
+    borderRadius: 10,
+    marginVertical: 5,
+    alignItems: 'center',
+    width: '80%', // 버튼 너비
+  },
+  logoutButton: {
+    backgroundColor: '#eeeeee',
+  },
+  blackbuttonText: {
+    fontWeight: 'bold',
+    fontSize: 16,
+  },
 });
 
 export default SelectionScreen;
tsconfig.json
--- tsconfig.json
+++ tsconfig.json
@@ -1,3 +1,3 @@
-{
-  "extends": "@react-native/typescript-config/tsconfig.json"
-}
+{
+  "extends": "@react-native/typescript-config/tsconfig.json"
+}
Add a comment
List