Introduction:
This is a mono-repo project which has both Ginie app (built on top of react-native) , CCL (chart library as packages) and Docz (documentation of packages)
To add dependency at root level, run with -W
. For example, see below
yarn add --dev -W prettier
** Commit should be done via yarn commit
. Don't use git commit
**
Development Setup Requirements
Prerequisites
- XCode (Not applicable for windows OS)
- Android Studio and standard setup for Android studio
- yarn: We recommend to use yarn as package manager, as our lint-staged commands are using yarn.
- lerna: For versioning packages
- commitizen: To standardise commit workflow
Prerequisites for React-native in Mac (Android):
Add local.properties in android folder with below content
sdk.dir = /Users/username/Library/Android/sdk
Build commands
To run Ginie locally
- Install Prerequisites as mentioned above.
- Install the packages using :
yarn
- Install pod libraries for ios using:
yarn pod
- Start the application using :
yarn ginie:start
- In a parallel terminal, run the application using :
yarn ginie:ios
to run in iOS simulator oryarn ginie:android
to run in android emulator.
To generate APK:
- Install Prerequisites as mentioned above.
- Install the packages using :
yarn
- Build the application using
yarn ginie:android:bundle
- The output of the file can be found in
applications/ginieNative/android/app/build/outputs/apk/release/app-release.apk
To generate IPA:
- Not yet defined
To run Docz locally
- Install Prerequisites as mentioned above.
- Install the packages using :
yarn
- Start the application using :
yarn docz:start
To build docz
- Install Prerequisites as mentioned above.
- Install the packages using :
yarn
- Start the application using :
yarn docz:build
To build/publish packages
- Install Prerequisites as mentioned above.
- Install the packages using :
yarn
- Start the application using :
yarn publish:packages
Contributing
Linting
eslint
rules are maintained as packages within this repository.
JavaScript files that aren't formatted by prettier
will cause eslint
to fail. You should either use an editor's prettier plugin to format your files when you save them, or run yarn prettier
before committing your changes.
Lint errors MUST be fixed before a pull request will be accepted.
Git commit guidelines
This project follows conventional-commits for commiting code. Specifically, we follow a slight variation on the Angular commit conventions, so read that and become familiar. This enables us to automatically generate CHANGELOGs for each package, and calculate semver.
We use yarn commit
instead of git commit
. This uses the commitizen-cli
with a custom adaptor to assist in writing the commit according to the correct structure.
The commit message structure is:
type(scope): summary
description
breaking
i.e.
fix(survey): update api endpoint for survey submit
Commit Summary Wording
When writing your commit summary:
- Explain why, not how.
- Bad: "use overflow-wrap and word-break"
- Good: "prevent long URLs from overflowing"
- Write in the imperative case.
If in doubt, try and complete the following sentence:
If applied, this commit will...
i.e.
- Bad (how, not why): If applied, this commit will use overflow-wrap and word-break.
- Bad (not imperitive): If applied, this commit will fix a bug causing long URLs to overflow.
- Good: If applied, this commit will prevent long URLs from overflowing.
Editor
We recommend Visual Studio Code for the editor.