freezr is an open source personal server, built on node.js.
It acts as a thin layer providing identity and permissions management, to connect apps to the data owner's files and data.
Apps define their parameters and permissions via an App Manifest
Apps communicate with the server via a Core API which is CEPS-compatible.
Apps can be independent third party apps outside of the freezr server (eg a smart phone app that communicates with your freezr, or even a third party server that stores your data on your freezr.) But freezr also allows html apps to be served from your freezr server. Such a "freezr app" is just a collection of html, css and js files which you can "install" on your server. ie you just download the html/css/js files on your freezr, define how a page should be served in the manifest and then
Within freezr, all data is stored within a user's preferred storage medium - their personal data store, which can be on Google, or AWS or Dropbox, or any other storage medium that is connected to freezr via its Storage API. Here, data refers to actual data sitting in the freezr database, any files which you store there (eg pictures), as well as the freezr-app's actual program files (ie html/css/js files served.)
Details on all of this can be found in the sections below.
A manifest defines a JSON object with the attributes listed below. A freezr manifest is compatible with the manifest described by CEPS, with some additional features.
Each web page's main html file serves as a key to an object with the attributes below. (eg index.html would have the key "index".)
should contain json objects with the name of the collection, and each collection name object can have the following attributes:
"field_names" should contain json objects with the name of the key, and each key object can have the following attributes:
"permissions" are a list of json objects with the name of the permission. Each permission object has the following attributes:
An object_delegate can have the following attributes:
An object_delegate can have the following attributes:
A db_query can have the following attributes:
A folder_delegate can have the following attributes:
A field_delegate can have the following attributes:
An outside_scripts can have the following attributes:
This is an example of a manifest file. (Key words in green):
The freezr_core API is a set of javascript functions for accessing the database, accessing uploaded files, managing permissioning, and rendering pages.
freezr automatically includes this library (freezr_core.js) when a freezr-app is served. But this file can also be used in stand-alone apps, including any ceps-compatible app. The freezr core API with the functions below.
The main functions may be used either with a callback or as a promise. For example, you can write either
freezr.ceps.create({foo: 'bar'}, function(results) { console.log(results)})
or
results = await freepr.ceps.create({foo: 'bar'})
("freepr" is shorthand for "freezr.promise".)
The functions in the library are:
Description coming soon