<commit_before>Concurrent Online WebGIS
========================

COW is a real time multi-user geo-editing application for the browser. The application is based on OpenLayers and jQuery. It uses secure websockets to send changes to its peers and indexeddb to store features in the browser for offline usage.

Currently the server is a normal websocket node.js server behind a haproxy which handles the secure bit.

The core has been tested with jQuery versions 1.8.2 and 1.9.1. The demo client has been tested with jQuery-UI versions 1.9.1 & 1.10.2

API
===
COW is a workspace to concurrently share data with peers over a webscoket. Peers represent the people who connected to the same websocket. It is build around a core object that binds together the syncStores, records and messaging components.

Schematically, it looks like:
-----------
* core
   * websocket
   * peerStore 
       * peers
   * userStore
       * users
   * projectStore
       * projects
           * groupStore
               * groups
           * itemStore
               * items
               
-----------

All the stores behave the same* and as follows (userStore as example):
`````javascript
    core.users({_id:<string>}) -> adds a record with id, returns record object
    core.users(<string>) -> returns record object with id = <string><commit_msg>Add supported browsers to readme.md<commit_after>Concurrent Online WebGIS
========================

COW is a real time multi-user geo-editing application for the browser. The application is based on OpenLayers and jQuery. It uses secure websockets to send changes to its peers and indexeddb to store features in the browser for offline usage.

Currently the server is a normal websocket node.js server behind a haproxy which handles the secure bit.

The core has been tested with jQuery versions 1.8.2 and 1.9.1. The demo client has been tested with jQuery-UI versions 1.9.1 & 1.10.2

COW works on the following browsers:
* OSX Safari 7
* Chrome 31 +
* Firefox 26 +
* Internet Explorer (IE) 10 +

API
===
COW is a workspace to concurrently share data with peers over a webscoket. Peers represent the people who connected to the same websocket. It is build around a core object that binds together the syncStores, records and messaging components.

Schematically, it looks like:
-----------
* core
   * websocket
   * peerStore 
       * peers
   * userStore
       * users
   * projectStore
       * projects
           * groupStore
               * groups
           * itemStore
               * items
               
-----------

All the stores behave the same* and as follows (userStore as example):
`````javascript
    core.users({_id:<string>}) -> adds a record with id, returns record object
    core.users(<string>) -> returns record object with id = <string>
{'fraction_non_alphanumeric': 0.08827734095782702, 'fraction_numerical': 0.011794138670478913, 'mean_word_length': 2.8500687757909215, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1803975', 'n_tokens_mistral': 754, 'n_tokens_neox': 693, 'n_words': 354}