Current Version: 12.7.1
Expo SDK: 54.0.0
Here are some quick commands to get started (we use yarn):
yarn install: Install Node dependenciesyarn start: Start Expo development serveryarn ios: Run on iOS simulatoryarn android: Run on Android emulatoryarn test: Run the test suite and watch for changesyarn lint-fix: Run ESLint and auto-fix issues
| Name of Value | Description of Data |
|---|---|
assetMapRegion |
Region location numbers of asset map |
organization |
Name of the surveying users surveyingOrganization |
residentData |
All SurveyData parse model data stored based on the users surveyingOrganization |
offlineIDForms |
All SurveyData forms collected when user is offline |
offlineSupForms |
All Supplementary/Custom forms collected when user is offline |
offlineHouseholds |
All Household parse model created when user is offline |
pinnedForms |
All local pinned form data that the user choses when the long press on a custom form |
Select and MultiSelect PaperInputPicker fieldTypes have the option to have a text associated with a given select option.
For example if you wanted the user to have the option to add text when a user selects "Other", you would format your config for the field like this:
{ "label": "Some text.", "formikKey": "KEY", "value": [''], "fieldType": "select", "options": [ { "label": "Some text, "value": "some_val" }, { "label": "Other", "value": "OTHER", "text": true, "textKey": "__KEY__OTHER" } ] }
Important notes: "text": true
- This adds the text input field to the Other select option "textKey": "KEYOTHER"
- __: The double underscore at the beginning of the key is required. No other keys in the config use this and CANNOT use the double underscore or there will be errors
- KEY: this portion of the textKey needs to be an exact match to the formikKey of the field
- __: Second double underscore is also required. Without the first double underscore it will not matter.
- OTHER: This portion of the key is a direct match to the value of the select option. This is required to append the text input value to the original value in the array
- none of these values need to be capitalized
This project uses EAS Build for building and deploying to app stores. Native folders (android/ and ios/) are generated locally and are not tracked in git.
- App Configuration:
app.jsoncontains the main app configuration including bundle identifiers, permissions, and app metadata - Environment Variables: Sensitive values are stored in
environment.js(not tracked in git) - EAS Configuration:
eas.jsondefines build profiles for development, preview, and production
For releases and bumping versions, we have:
yarn release-patch: Does a patch bump i.e.1.0.0to1.0.1yarn release-minor: Does a minor bump i.e.1.0.0to1.1.0yarn release-major: Does a major bump i.e.1.0.0to2.0.0
NOTE: Version bumps are required for app store submissions. Both Google Play and App Store require unique version codes for each submission.
Build and deployment commands:
yarn build-appsoreas build --platform all: Build for both iOS and Android using EAS Buildeas build --platform ios: Build for iOS onlyeas build --platform android: Build for Android onlyyarn submit-apps: Submit the latest builds to both App Store and Google Play
- Install EAS CLI:
npm install -g eas-cli - Login to your Expo account:
eas login - Configure the project:
eas build:configure - Create required files from examples:
- Copy
environment-example.jstoenvironment.js - Fill in required API keys and secrets
- Copy
- Build:
eas build --platform all
We use Jest for both unit tests and integration/cross-stack tests.
yarn test: Run tests in watch modeyarn test-debug: Run tests in debug mode without coverageyarn test-run: Run all tests once and exit