• Stars
    star
    102
  • Rank 335,496 (Top 7 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 12 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SpiderOak HTML5 / Javascript / CSS mobile client application, rebooted

Overview

Build Status

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.

Dependencies

  • Node and npm - http://nodejs.org/
    • Node package manager for Grunt Add-ons
    • We require Node 6.x. We recommend using nvm to manage multiple Node installations.
  • Grunt - http://gruntjs.com/
    • Build tool for minimising, running and tests
    • npm install grunt-cli -g
  • PhantomJS version 1.x - http://phantomjs.org/
    • Headless webkit for running tests
    • npm install phantomjs@1 -g

Getting started

  • clone the project
  • cd into the project folder
  • npm install, which
    • installs node_modules and js/css components,
    • runs bower install, which installs some other stuff
  • grunt brand:ONE
    • configures the project for the default brand ("SpiderOakONE")
    • adds the default cordova platforms — Android and iOS.

First test

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).

Workflow

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 tasks

grunt jshint

  • runs JSHint on the src files `src/**/*.js``

grunt concat

  • concatenates the src files in 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
  • concatenates the src files in 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

  • minifies 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

  • compiles the DoT templates

grunt shell:mochaspec

  • runs Mocha tests in 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

  • runs Mocha tests in 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

  • starts watching the same files as grunt concat:dist as well as the files from grunt concat:tests and when changes are detected runs jshint dot concat shell:mochadot

Custom tasks

grunt (default tasks)

  • runs jshint dot concat shell:mochadot

grunt test

  • runs jshint dot concat shell:mochaspec

grunt debug:ios

  • runs jshint dot concat shell:debug_ios to debug iOS platform on the simulator

grunt debug:android

  • runs 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.

Brand Customization

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.

Binary Releases

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
  • Regarding building your own:
    • Apple doesn't provide for alternative stores or side loading, but you can clone this project project onto a Mac and, provided you have Apple's (free) developer environment installed, install your own, ad hoc builds onto iOS devices.
    • For Android, on various Unix-like platforms you can build and install with Googles Android developer SDK installed

More Repositories

1

Encryptr

Encryptr is a zero-knowledge cloud-based password manager / e-wallet powered by Crypton
JavaScript
1,573
star
2

ZipStream

Like Python's ZipFile module, except it works as a generator that provides the file in many small chunks.
Python
71
star
3

nimbus.io

Nimbus.io is both a commercially available cloud storage service AND a free software project others may use and participate in.
Python
62
star
4

skeeter

detect and publish postgres events on a zeromq PUB socket
C
34
star
5

react-wasm-bridge

Render react components in rust
JavaScript
26
star
6

netkes

Networked key escrow server and LDAP sync code for SpiderOak Blue.
Python
15
star
7

flow-python

Python API to the Semaphor client backend
Python
14
star
8

flowbot

A boilerplate for rapid Semaphor bot production
Python
12
star
9

react-markdown-wasm

A simple markdown renderer using react-wasm-bridge
JavaScript
12
star
10

spideroak_osx_fsevents

lightweight filesystem change notification utilities for OSX
C
9
star
11

FileViewerPlugin

Cordova File Viewer Plugin for Android based on the WebIntent plugin by Boris Smus
Objective-C
8
star
12

crypton-web

HTML
8
star
13

so_client_html5

SpiderOak HTML5 / Javascript / CSS mobile client application
JavaScript
6
star
14

spideroak_inotify_dir_watcher

lightweight filesystem change notification utilities for Linux
C
6
star
15

WebCryptoPitfallsSolutions

An effort to document the pitfalls of web crypto and a roadmap for making browsers more secure & private
6
star
16

encryptr-web

JavaScript
5
star
17

docker-storcli-prometheus

Python
4
star
18

enkube

Toolkit for managing and deploying things in Kubernetes
Python
4
star
19

spideroak_windows_dir_watcher

lightweight filesystem change notification utility for Windows
C++
4
star
20

crypton-data

data explorer for crypton.io
JavaScript
3
star
21

ldap-reader

Python LDAP library for listing accounts and authenticating them against LDAP.
Python
3
star
22

errstack

a cumulative container for go language errors
Go
2
star
23

lumberyard

Low level API for nimbus.io
2
star
24

DeviceSetupScripts

Scripts to setup a device automatically, using the hostname as the device name.
Shell
2
star
25

old_log_inn

lossless centralized logging via ZMQ.
Python
2
star
26

GoWinHttp

A Golang-flavored interface to WinHTTP
Go
2
star
27

nativeweb

Native HTTP calls through Golang.
Go
2
star
28

directory-wormhole

The director wormhole is a simple Python3 program that watches a directory with inotify for files matching a glob pattern. When matching files exist, they are uploaded to Nimbus.io and then deleted.
Python
2
star
29

statgrabber

Perl
1
star
30

flowbot-github

Alert Semaphor channels on new webhook events.
Python
1
star
31

motoboto_benchmark

Benchmarks and tests for the nimbus.io motoboto API
1
star
32

flow-ldap

Python app that runs on Customer Infrastructure, enabling the use of Semaphor with Customer LDAP credentials.
Python
1
star
33

motoboto

'Boto' like API for nimbus.io
1
star
34

cordova-android-accountmanager

Cordova Android AccountManager plugin
JavaScript
1
star
35

flowbot-twitter

A twitter bot for Semaphor
Python
1
star
36

wincertstore

Windows certificate store
Go
1
star