I'll add some information about the development stack as well.
First and foremost Three.js, that made getting a prototype up and running in a weekend viable.
For mobile, we use Cordova and package the app up for various platforms.
On top of Cordova we run a lot of custom code to smooth out the filesystem and streaming of data to and from the engine that relies heavily on Three.js internally.
We also built a custom IOC container to manage the ever increasing amount of components and integrations.