Seek is an app for identifying plants and animals. It is available on iOS and Android., if you'd like to help out, please see CONTRIBUTING.
.nvmrc
. Realm only works with certain versions of Node, so you will need this for local data storage.npm install
npx pod-install
from within the ios
directory.android/app/src/main/res/values
and rename config.example.xml
to config.xml
(and change its values to match your API keys)config.example.js
to config.js
and change the JWT secret.small_model.zip
file.small_inception_tf1.tflite
and small_export_tax.csv
. Create a camera folder within Android assets (i.e. android/app/src/debug/assets/camera
) and place the files there. small_inception_tf1.mlmodel
and small_export_tax.json
and should be added to the Resources folder in XCode.utility/commonNames
to allow the AR camera to load common names in localized languages. The latest files are attached assets named commonNames.tar.gz
in the latest Seek release page..env
file and corresponding JSON_KEY_ANDROID file, following example in .env.example
.local.properties
file to android
folder with correct sdk path to build on an Android device.npm start
npm run ios
or npm run android
Most third-party libraries use autolinking as of React Native 0.60.0. Any exceptions are listed in the react-native.config.js
file. Currently, react-native-inat-camera on Android is manually linked.
We currently have three kinds of tests:
tests/integration
: Tests the integration of multiple modules, e.g. a list of observation that makes requests to a mocked API, persists the response data in local storage, retrieves the data from local storage and renders components.tests/unit
: Tests only specific modules, like a single component, or a hook.e2e
: Tests user interactions on the finished app build running on the iOS simulator (see below).We're using Jest and React Native Testing Library for most of our tests.
# Run all tests
npm test
We're using Detox for E2E tests. If you want to run the e2e tests on your local machine (MacOS only), make sure you fulfill the RN development requirements, see above, and also follow the test-specific environment setup.
# Build the app and run the tests
npm run e2e
If you have built the app already for a previous test, and just want to run an updated test without changing the app code, you can run npm run e2e:test
.
If you are running into some issues after the tests have been working for some time, try updating applesimutils
with brew update && brew upgrade applesimutils
.
npx react-native clean-project
to clear caches and reinstall node_modules and pods.We do our translations on Crowdin. Head over to https://crowdin.com/project/seek and create an account, and you can start suggesting translations there. We regularly export translations from Crowdin and import them to this project.
When a language is at least 20% translated on Crowdin, follow these steps to enable it in the app.
i18n.ts
.utility/dictionaries/languageDict.js
for users to be able to choose a locale in settings.utility/dateHelpers.js
so date strings can be correctly translated.seek_common_names.rb
.commonNames.tar.gz
directory via staging and copy it to your local machineutility/commonNames
.addCommonNamesFromFile
function in utility/commonNamesHelpers.js
.