SpiderOak HTML5 / Javascript / CSS mobile client application, rebooted
SpiderOak is reimplementing its mobile client applications as a central, platform-independent HTML5 / Javascript / CSS core, hybridized with native extensions to fill functionality gaps. This will replace the preceeding, entirely native applications. We see many benefits to the html5 approach, including (if we're diligent) comprehensiblility as well as versatility.
There are many ways that access to our code can be useful. It can serve as guidance to people as examples for using our APIs. It can serve as a base for implementation of custom functionality that they need. It can provide the opportunity to contribute to and help grow this useful tool, itself. These and other reasons are why we make the code openly available, and the development process reasonably transparent.
Therefore, the code is officially available as free/open source software, under the terms of the Apache 2.0 license, and we are conducting our development in a github public repository.
It's worth mentioning that this mobile client is extremely important to SpiderOak as a business. We are opening the source in order to make the development effort more immediately useful, in ways described above, as well as to leverage various collaboration opportunities that such openness affords. We will continue to devote core internal development resources to this effort.
npm install grunt-cli -g
npm install phantomjs@1 -g
npm install
, which
bower install
, which installs some other stuffgrunt brand:ONE
To make sure everything is set up from the above, run your first tests
Run grunt test
- This will lint the source (grunt lint
), concat the source into a single js file (grunt concat
) and finally run the headless Mocha tests (grunt shell:mochaspec
).
JavaScript files are in src
. They are kept out of the www tree so that they can be linted without trying to lint the concatenated and minified versions. However, the index.html should have a script tag only for the JavaScript files in either components
(managed by Bower) or www/js
.
Building and testing the project is normally done via the Grunt tasks below.
grunt jshint
grunt concat
src/models/*.js
, src/collections/*.js
, src/views/*.js
and src/app.js
(in that order) into www/js/<package-name-from-package.json>.js
tests/models/*.js
, tests/collections/*.js
, tests/views/*.js
and src/index.js
into www/tests/<package-name-from-package.json>-tests.js
grunt min
www/js/<package-name-from-package.json>.js
into www/js/<package-name-from-package.json>.min.js
(so should only be called after calling grunt concat
above)grunt dot
grunt shell:mochaspec
www/tests/<package-name-from-package.json>-tests.js
based on the template www/tests/index.html
and outputs via the Mocha "spec" reporter.grunt shell:mochadot
www/tests/<package-name-from-package.json>-tests.js
based on the template www/tests/index.html
and outputs via the more minimalist Mocha "dot" reporter.grunt watch
grunt concat:dist
as well as the files from grunt concat:tests
and when changes are detected runs jshint dot concat shell:mochadot
grunt
(default tasks)
jshint dot concat shell:mochadot
grunt test
jshint dot concat shell:mochaspec
grunt debug:ios
jshint dot concat shell:debug_ios
to debug iOS platform on the simulatorgrunt debug:android
jshint dot concat shell:debug_android
to debug Android platform on the emulator (or a plugged in device)See the Running, Testing, and Debugging section of the wiki home page for more info.
The build context is organized so you can configure your clone for brand-specific features, across all the build platforms. See White label App Customization for details.
Additionally, files in your clone with names that start with "gitignore-" are exempted from git scrutiny (gitignored). This is handy for, eg, situating server-specific certificates that don't have their own brand configuration, without danger of inadvertently checking them in.
The SpiderOak mobile client Android production release is available, via:
Platform | Venue | Version | For users... |
---|---|---|---|
iOS | Apple App Store | ONE | Regular users |
iOS | Apple App Store | Groups | Users with enterprise-specific servers |
Android | Google Play | ONE | Regular users |
Android | Google Play | Groups | Users with enterprise-specific servers |
All | This repository | All | Build and install it yourself - see notes below |