This app uses the following technologies; familiarity is likely required:
- Cordova — a native app wrapper
- TypeScript — type safety, preventing common errors
- React — view rendering
- MobX — state management
- Webpack — building and compilation
Files are organized as follows:
src/
contains the main app sources.- Most files have the
.tsx
extension (TypeScript with JSX).
- Most files have the
www/
is autogenerated and should not be modified directly.- During compilation, webpack takes files from
src/
and copies needed files here.
- During compilation, webpack takes files from
plugins/
andplatforms/
are installed by Cordova when runningcordova prepare
. They should not be checked in.
When making code changes, you can execute npm run watch
, which will incrementally
build the app as changes are made. You can serve the www/
folder directly (e.g.
with node's http-server
or similar) and test most features in the browser.
We try to support and shim any necessary native APIs to enable in-browser testing.
It is recommended that you use an IDE that supports TypeScript, such as Visual Studio Code. This makes development much easier, as errors, type definitions, and refactoring support are all provided inline.
Prerequisites:
- Install node and npm.
- Install cordova:
sudo npm install -g cordova
- Install dependencies:
npm install
- Run
npm run build
.
- Requires Xcode
cordova platform add ios
(the first time)cordova build ios
- Install the app with Xcode or try
cordova run ios --device
cordova platform add android
(the first time)cordova build android
cordova run android --device
To generate the icons and splash screen (after setup steps noted above):
brew install imagemagick
(Mac)./generate-icons.sh
- iOS 9+ (iOS 8 has poor support for FlexBox, < 8% using iOS 8 as of 2016-10)
- Android 5+
Notes:
- No Compass Support: Samsung Galaxy J7, iPod Touch