Seek is an app for identifying plants and animals. It is available on iOS and Android.
- Make sure you're running the Node version specified in
.nvmrc
. Realm only works with certain versions of Node, so you will need this for local data storage. - Install dependences with
npm install
- If building for iOS, run
npx pod-install
from within theios
directory.
- Go to
android/app/src/main/res/values
and renameconfig.xml.example
toconfig.xml
(and change its values to match your API keys) - Rename
config.example.js
toconfig.js
and change the JWT secret. - Add AR Camera model and taxonomy files.
- The sample model files are available in this
small_model.zip
file. - On Android, these files are named
small_inception_tf1.tflite
andsmall_export_tax.csv
. Create a camera folder within Android assets (i.e.android/app/src/main/assets/camera
) and place the files there. - On iOS, these files are named
small_inception_tf1.mlmodel
andsmall_export_tax.json
and should be added to the Resources folder in XCode.
- The sample model files are available in this
- Add files to
utility/commonNames
to allow the AR camera to load common names in localized languages. The latest files are attached assets namedcommonNames.tar.gz
in the latest Seek release page. - For Fastlane, add
.env
file and corresponding JSON_KEY_ANDROID file, following example in.env.example
. - Add
local.properties
file toandroid
folder with correct sdk path to build on an Android device.
- Run
npm start
- Build locally to a device or simulator by running
npm run ios
ornpm 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.
- One common issue in React Native involves libraries not being found by the bundler. If this happens, try
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.
- Import translation files into
i18n.js
. - Add localized names to
utility/dictionaries/languageDict.js
for users to be able to choose a locale in settings. - Import languages in
utility/dateHelpers.js
so date strings can be correctly translated. - Use staging to add new locales to
seek_common_names.rb
. - Generate a compressed
commonNames.tar.gz
directory via staging and copy it to your local machine - Spot check that common name translations look correct, then overwrite existing files in
utility/commonNames
. - If needed, load additional files via
addCommonNamesFromFile
function inutility/commonNamesHelpers.js
.