Project Name: VariantBasedComponent
Bundle Id / Package Name: com.simform.variantbasedcomponent
A VariantBasedComponent boilerplate to kickstart your project with some commonly used setups, components, navigation and screens.
iOS : XCode(15) onwards
Android : Android Studio Flamingo(2022.2.1) with gradle(7.2) onwards
Editor : Visual Studio Code
-
Open the project directory in to terminal
-
Run and build for either OS
-
Run iOS app
yarn run ios
-
Run Android app
yarn run android
-
Note: This yarn scripts will lint your code first. If there are no lint errors, then it will run the ios or android app. Otherwise it will show the lint errors in the terminal.
-
This project adheres to JavaScript Standard for coding style. To maintain coding standards, utilizing features of ES6 and follow best development practices of react-native, this project also uses ES6, some rules of eslint-config, import-resolver-typescript and eslint-plugin-import.
Do not disable lint inside the code. Try to understand the rule and then follow it into your code. Disabling lint will be considered a violation of coding standards. Exceptions will be allowed by the code-reviewer and team lead after understanding the need to ignore lint.
-
To Lint
Use the yarn script
lint
. To run it
yarn lint
-
Auto Lint on Commit
This is implemented using husky. So husky will prevent code-commits having lint errors. There is no additional setup needed.
-
Understanding Linting Errors
The linting rules are from JS Standard and React-Standard. Regular JS errors can be found with descriptions here, while React errors and descriptions can be found here.
Describe any extra steps which need to be taken for the auto-generated android project. Eg. Some specific setup of any manifest file, some manual linking which is buggy and needs to be corrected for first checkout etc. Here is an example:
- Mind the version of google services used in the project. All google services must have same version. This is implemented using project level build.gradle.
Describe any extra steps which need to be taken for the auto-generated ios project. Eg. Some specific setup of any certificates, pods, linking, information in Info.plist, some manual linking which is buggy and needs to be corrected for first checkout etc. Here is an example:
- You will need all the certificates to run the ios project in a real device.
List all dependencies from the package.json file along with their usage. This list must be updated every time you change/add any dependency. Here are some examples:
-
Framework:
-
State management libraries:
-
Middleware libraries:
-
Navigation:
-
For Api
-
Storage:
-
Config:
-
Crash report:
-
For Validations:
-
For Utilities
Mention all the accounts used for various development and deployment platforms. Just email/username should be mentioned but never a password. Make sure this information stays in a private repository. If your repository is public, do not share this kind of private information via readme. Provide another private source. Like a private file on our zoho or a file in Microsoft Teams.
Sonarqube: [email protected]
Bitrise: [email protected]
Google Play: [email protected]
Apple Store and developer account: [email protected]
Firebase/Google service: [email protected]
Provide troubleshoot guideline for any known issues. For example, a specific error for build or deployment processes or even an error in any third party dependency.
For example
- Application crashes in production because of react-native-maps. Follow this link to fix it.
If there no known issues:
- There are no known issues for run or build processes right now.
Here any information which is important but not mentioned above and must be passed among all developers, should be mentioned. Like which branch is used for build releases, library deprecations etc.
For example
- Release builds are distributed from release branch and all pull requests are done to develop branch.