About

CloudWall is a platform, a kind of toy OS, for authoring, storing, and sharing docs and noBackend webapps right in a browser tab. It needs nothing to work than modern HTML5-compliant browser.

CloudWall requires neither ‘central server’ nor permanent internet connection to operate properly – but can sync local DBs with remote clouds when connection is available.

CloudWall suits well for UI prototyping, creating private networks, collecting data in areas where there is no cellular/wifi coverage and so on.

CloudWall, when built, is just a 5 Mb set of static html, css, js and json files – so it can be deployed at any static hosting. Site cloudwall.me for example hosts at Amazon S3.

How it works

Storage. CloudWall creates and maintains doc-oriented database on top of your browser’s internal persistent storage. Internal structure and features of this local DB are very similar to those provided by CouchDB standalone instances. 

In more simple words, CloudWall storage is somehow several Dropboxes right inside your browser tab. You can have several local buckets of docs, each two-way synced with different remote CouchDB instances over http(s).

Since remote CouchDB instances can have many registered users, you can share data and apps with them, building your own private networks. 

Apps. Some docs stored in browser DB are treated as javascript applications of jQuery.my manifest structure. Since jQuery.my apps are JSON docs, they fit storage perfectly. 

CloudWall has built-in IDE – apps can be authored, tested, and deployed right in browser.

After deployment (just click Save button in app editor), each app can be executed in separate ‘slot’ and perform document creating and editing, some DB ops, network ops, and so on.  

Docs. Documents, that live in your browser DB, are more like emails than like files. Each doc has json body with optional file attachments. Attachments are stored and transmitted with the body.

User account. There is no remote server ‘user account’ by default – when OS starts on new machine, it prompts user to enter preferred login and PIN (short code to protect local profile). 

After user choose his user name, new local profile (in fact, special local DB bucket) is created. It later can be synced with remote private CouchDB bucket, accessible only for you. If your local profile is synced with remote CouchDB, you can have several devices linked with your user profile.

Slots open while editing this doc

Multitasking. You can open many appslots running simultaneously in one browser tab. So you can edit many docs of different types, manage them, do other stuff – just switching slots like you do it on ‘big’ OS.

Slots – running apps – are listed in right aside column.

IDE. You can edit your own and system apps and editors – tune them up in real-time and see changes. Right in browser

CloudWall itself was created using CloudWall IDE.

Share stuff. It all is worthless if you couldn’t share your docs (and apps to open them) with others. Fortunately, you can – and it’s easy.

How it syncs

In-browser CloudWall DBs are capable to sync with external CouchDB instances. CouchDB is one of the easiest enterprise class DBs to install and operate. Just download and run on web-connected machine – and you have your own private cloud.

Also, there are several SaaS providers of running CouchDBs – Cloudant and SmileApps, for example. Or you can deploy Couch at Amazon EC2 free tier virtual machine and have one year $0 own cloud. There is a manual how to run all these resources.

Other users of CloudWall can also sync with your cloud – continuously, in real time. You save a doc or deploy an app – others you granted access to your cloud see an update. To share a cloud just send URL of remote CouchDB to someone and – if you want them contribute – login/pwd to obtain write permissions.

To have your devices synced just deploy your private cloud, make strict access DB and sync your profile with this DB. When you connect new device to CloudWall, enter this DB URL as a profile source – and you’re in. Just connected device will become synced in several minutes.

Private clouds by themselves can continuously sync filtered portions of docs between each other – chaining clouds in relays, aggregators, or analytics collectors. 

Private data

CloudWall.me site and servers do not store your docs. None of them. Nothing about them. Nothing about your transactions on them. Really nothing about your data.

CloudWall employs your local device resources. You’ve bought your device for several hundreds or even thousands of bucks – and it has plenty of memory, CPU, and storage. More than enough to execute real-time multiple-source syncing in-browser DB. And more than (or nearly – for tablets) enough for web app platform to run.

The only info cloudwall.me collects is the fact you logged on and how many replicated DBs you have.

Working offline

Once tab is opened, it need in general no internet connection to operate. So you can author or modify docs offline. They are saved locally and get synced when you go online. 

CloudWall is suitable for any workflow that need real-time data collecting offline. 

Securing data

CloudWall app framework has a built-in feature that encrypts docs during save and decrypts when you open it by click. You have your own protected key chain and can select a key to encrypt the doc.

Other person receiving the doc replica can’t read it if you didn’t share the key, by email or in other external to CloudWall way. This feature can help secure sensitive docs and create distributed access groups. 

Also this feature is used to protect your profile. Account settings doc is stored encrypted with salted PIN-code, because it contains the most sensitive data – key repo and passwords for clouds you’re synced with.

Terms of use

Using CloudWall you must clearly understand that it’s a beta. It is built on top of many open-source and fast evolving third-party libraries. It is an open platform – you can write your own code, that can impact system stability. It all means no guarantees of reliability – but in most cases it works quiet fine. 

 Be smart and get synced with external CouchDB if you keep sensitive data in browser. 

You can use cloudwall.me and connectivity it provides for free for any legal purpose. You can create and distribute your own apps and docs, create your local DBs and private clouds of any kind – do anything you want. 

Also CloudWall is available at Github as ready-to-install compiled code and as JSON bundle of CouchDB source docs. You can load this dump to create your own CloudWall fork.

Credits

CloudWall specific system code and apps are quite lean – about 90kB of gzipped javascript. It is possible because CloudWall uses and glues together plenty of javascript plugins. Functions they provide are used to maintain DB, exec apps, and render rich and responsive user interface.

Plugins and libs

PouchDB extends browser internal DB and makes it CouchDB-compatible and connective.

Sugar.js extends std javascript primitives and delivers a lot of real syntax sugar.

jQuery. We all must hymn jQuery. Every day.

jQuery.my executes app manifests, renders UI, and manages real-time bindings between in-memory docs and UI. 

jQuery UI. Well documented and maintained UI lib. Datepickers and sliders are especially nice.

Select2 plugin provides beautiful dropdowns, YouTube-like tag selectors and similars.

Redactor is the best of existing more or less free web rich text editors. ‘Air’ mode rules!

CodeMirror. Provides code editors and code view beautification.

Ace. Used when CodeMirror isn’t enough, twice as heavier.

d3.js is a world of graphic data presentation tools. Diags, pies, charts, all interactive.

Fonts and icons

Foundation Icons. Nice set of vector icons, incorporated in CloudWall.

Proxima Nova font family. Perfect readable and trendy, 20 years old – and nice like everything 20-years old. If you use CloudWall code outside cloudwall.me site, you must buy separate licanse to these fonts – or use Helvetica instead.

License

CloudWall is licensed under MIT.