Developer’s Guide

Installation

To install the code base for local development, you’ll need to make sure you have a JDK, NodeJS, and React Native installed. React Native can be installed using npm once NodeJS has been installed:

npm install -g react-native-cli

If you want to be able to run the application in the iOS and Android emulators, you will also need to install XCode and Android Studio. You will need to make sure that you create an Android virtual device before you can launch an Android emulator. There is a good tutorial on how to do that here.

Finally, clone the repo, cd into the project directory and run

npm install

This will install all of the required npm libraries for the application.

If you want to edit the documentation, you will need JSDoc and Sphinx:

npm install -g jsdoc
pip install sphinx-js

The application can be run like any other React Native application.

iOS

react-native run-ios

Android

react-native run-android

Ensure that you start the Android emulator before running the run-android command. The iOS emulator will automatically start when run-ios is called.

Documentation

Documentation should be written using reStructuredText. Standalone doc pages should be put into docs/source so the docstrings end up in the docs site. Pages won’t show up on the site unless they are linked from another page (that is linked from another page…) which is eventually linked to from index.rst.

Creating the docs (modeled on this)

On your local machine create another directory in the directory that contains the main application directory. I.e. if you cloned the repo into my_workspace/MobileStats, then create a second directory my_workspace/MobileStats_docs. eg:

$ pwd
/home/username/my_workspace
$ ls MobileStats*
MobileStats:
...
MobileStats-docs:
...

The code repository, MobileStats/, is where modifications are made. MobileStats-docs/ is generated when the docs are built.

The docs directory MobileStats-docs/ should contain a directory called html which is a special MobileStats git repository that is set up to only have a special single branch: gh-pages. This is where the documentation builder places its outputs. To create such a directory for the first time:

mkdir MobileStats-docs  #if needed - should be next to MobileStats as above
cd MobileStats-docs
git clone https://github.niaid.nih.gov/dommerjl/mobile-stats-app.git html
cd html
git checkout gh-pages
git symbolic-ref HEAD refs/heads/gh-pages

To build the docs you will need to pip install the Sphinx library:

sphinx_rtd_theme

The docs are then built with

cd docs # pwd is now MobileStats/docs
make html # we're only generating a website.

This will build the docs into MobileStats_docs/html. The website can be viewed in the MobileStats-docs/html/ directory by running:

# pwd is MobileStats-docs/html/
python -m SimpleHTTPServer 8000

to examine the docs as they are created. Docs can be viewed at 127.0.0.1:8000.

Once you are happy with the documentation you can publish it on github by running:

# pwd is MobileStats-docs/html/
git commit -a -m "rebuilt docs"
git push origin gh-pages