{"id":19556705,"url":"https://github.com/webmobi59/scanner","last_synced_at":"2026-06-13T19:34:44.378Z","repository":{"id":130342517,"uuid":"192314110","full_name":"WebMobi59/scanner","owner":"WebMobi59","description":"Sage Scanner app - React Native","archived":false,"fork":false,"pushed_at":"2019-09-23T09:31:13.000Z","size":4073,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-26T07:44:49.309Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WebMobi59.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-17T09:14:18.000Z","updated_at":"2020-02-04T18:22:02.000Z","dependencies_parsed_at":"2023-03-15T06:15:49.772Z","dependency_job_id":null,"html_url":"https://github.com/WebMobi59/scanner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WebMobi59/scanner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2Fscanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2Fscanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2Fscanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2Fscanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WebMobi59","download_url":"https://codeload.github.com/WebMobi59/scanner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2Fscanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34298247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T04:38:55.355Z","updated_at":"2026-06-13T19:34:44.361Z","avatar_url":"https://github.com/WebMobi59.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  Sage Scanner App\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/)\n\n## :information_source: General\n\nStandard JS compliant React Native App generated via [Ignite](https://github.com/infinitered/ignite).\n\nAt its core, the app scans barcodes and interacts with the Sage backend to capture image and product data of in-store products by back-of-house associates.  The app is intended to run on both iOS and Android with re-use of components across both platforms.  Eventually it is hopeful that some of these components make it into the Sage consumer-facing app as well.\n\nIn terms of core dependencies, the app uses [Jest](https://facebook.github.io/jest/docs/en/api.html) as the test runner, with [Redux](http://redux.js.org/) \u0026 [Redux Sagas](https://redux-saga.js.org/) for state and control flow management, [React Apollo](http://dev.apollodata.com/react/) for declarative data dependencies in components, [Ramda](http://ramdajs.com/docs/) for utility functions, [React Navigation](https://reactnavigation.org/docs/intro/) for routing, [reduxsauce](https://github.com/skellock/reduxsauce) for Redux boilerplate generation, \u0026 [apisauce](https://github.com/skellock/apisauce) as a low-fat wrapper around [Axios](https://github.com/mzabriskie/axios) for raw XHR requests.\n\nThe project uses `.nvmrc` for node version management.  \nAs of this writing the we use node `7.1.10`\n\n\n## :arrow_down: Global dependencies\n\n```sh\nbrew install node watchman\nyarn global add react-native-cli\nbrew update \u0026\u0026 brew cask install react-native-debugger \u0026\u0026 brew cask install reactotron\nsudo gem install cocoapods\n```\n\u0026mdash; [alternatively, if you don't want to use `sudo` to install cocoapods, try this guide instead.](https://guides.cocoapods.org/using/getting-started.html#sudo-less-installation)\n\nThe app makes a few core changes to Ignite's boilerplate\n\n- Jest instead of Ava\n- React Native Debugger standalone app instead of Chrome developer tools\n- yarn instead of npm\n\n## :information_source: Setup\n\n**Step 1:** git clone this repo: `git clone https://github.com/webmobi59/scanner-app.git sage-scanner-app`\n\n**Step 2:** cd to the cloned repo: `cd sage-scanner-app`\n\n**Step 3:** Install the node dependencies of the project: `yarn install`\n\n**Step 4:** Get android set up via:\n\n```sh\nbrew install ant\nbrew install maven\nbrew install gradle\n```\n\n- Install [Android Studio](https://developer.android.com/studio/install.html) and follow this guide (roughly, as Facebook documentation may not be 1 to 1): [Android setup via Facebook docs]()\n\n- In your shell setup file of choice (e.g. `~/.zshrc` or `~/.bashrc`) add these exports to enable `react-native run-android`, which will require keeping an emulator running before execution, unlike the iOS variant, which spins up the simulator automatically:\n\n```sh\nexport ANDROID_HOME=~/Library/Android/sdk\nexport PATH=$ANDROID_HOME/tools:$PATH\nexport PATH=$ANDROID_HOME/platform-tools:$PATH\n```\n\n- Open the **Android Studio** app, hit the ⚙️ and install some SDKs (API 24/25+ as of this writing).  These will install everything is installed into ~/Library/Android/sdk -- with tools like emulator in the tools directory)\n- Open the project's `./android` directory in Android Studio, disregard the gradle warnings, and open the emulator manager (AVD) to crete some emulators.  The AVD manager is located in the Android Studio toolbar here: \u003cimg width=\"852\" alt=\"avd-manager-location\" src=\"https://cloud.githubusercontent.com/assets/245741/26455563/9f050026-4138-11e7-9dbf-5467090b3aec.png\"\u003e\n- Install/make some emulator virtual machines (Google Pixel @ API 25 is a good starting point)\n\n```sh\nbrew cask install android-platform-tools\n```\n\n\n## :arrow_forward: Running\n\n1. cd to the repo\n2. Run builds\n\nIn separate terminals:\n\n1. `yarn start`\n2. `yarn app:run:ios` or `yarn app:run:android` or `yarn app:run:both` depending on which version of the app you want to run.\n\n**To Run on Different iOS Simulators**\n\nYou can specify the device the simulator should run with the `--simulator` flag, followed by the device name as a string. The default is `\"iPhone 6s\"`. If you wish to run your app on an iPhone 7 for example just run:\n\nIn separate terminals:\n\n1. `yarn start`\n2. `react-native run-ios --simulator \"iPhone 7\"`\n\nThe device names correspond to the list of devices available in Xcode. You can check your available devices by running `xcrun simctl list devices` from the console.\n\n\n**To Run on Different Android Simulators**\n\nYou can check which Android Virtual Devices (AVDs) you have available and run the simulators as follows:\n\n1. To check which AVDs you have available, run `android list avd` and note the `name` key's value\n2. Due to some strange path issue, at least on Mac OSX Sierra as of this writing, you have to run the specific Android emulator from the binary in the tools directory directly, so `cd ~/Library/Android/sdk/tools` and from here on out use the local emulator binary via `./emulator`. You can now run the device using `./emulator -avd {{EMULATOR_NAME}}` with the name derived from step 1.\n3. In a seperate terminal run `$(~/Library/Android/sdk/tools/emulator -avd {{EMULATOR_NAME}} \u003e /dev/null 2\u003e\u00261)` with the name derived from step 1.\n\nNow, to run the actual app:\n\n1. `yarn start`\n2. Follow the above instructions and boot an Android simulator\n3. `react-native run-android`\n\n\n## :no_entry_sign: Standard Compliant\n\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nThis project adheres to Standard.\n\n**To Lint on Commit**\n\nThis is implemented using [ghooks](https://github.com/gtramontina/ghooks). There is no additional setup needed.\n\n**Bypass Lint**\n\nIf you have to bypass lint for a special commit that you will come back and clean (pushing something to a branch etc.) then you can bypass git hooks with adding `--no-verify` to your commit command.\n\n**Understanding Linting Errors**\n\nThe linting rules are from JS Standard and React-Standard.  [Regular JS errors can be found with descriptions here](http://eslint.org/docs/rules/), while [React errors and descriptions can be found here](https://github.com/yannickcr/eslint-plugin-react).\n\n## :closed_lock_with_key: Secrets\n\nThis project uses [react-native-config](https://github.com/luggit/react-native-config) to expose config variables to your javascript code in React Native. You can store API keys\nand other sensitive information in a `.env` file.  The following secrets are necessary to run the app:\n\n```\nAPI_BASE_URL=http://api.sageproject.com\nOAUTH_USER_ID=YOUROAUTHUSERID\nOAUTH_CLIENT_ID=YOUROAUTHCLIENTID\nOAUTH_CLIENT_SECRET=YOUROAUTHCLIENTSECRET\n```\n\nand access them from React Native like so:\n\n```\nimport Secrets from 'react-native-config'\n\nSecrets.API_BASE_URL  // 'http://api.sageproject.com'\nSecrets.OAUTH_CLIENT_ID  // 'YOUROAUTHCLIENTID'\n```\n\nThe `.env` file is ignored by git keeping those secrets out of your repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmobi59%2Fscanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebmobi59%2Fscanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmobi59%2Fscanner/lists"}