- Towards data freedom
What is an app?

At its simplest, an app is just an html snippet in a file, with out the html headers. freezr takes the html and wraps it in a header, adding a couple of extra elements - notably the freezr_core.js API, and a freezr logo to the top right of each app page. Clicking on the freezr logo will let you see all the data the app has been gathering and also manage the permissions you can grant to the app.

Of course, you can add multiple pages and css and js files to apps as well. You can use the app's app_config.json file to define what css and javascript files to add to the web page, and also to define the permissions to share data between apps and users.

Instructions (& Video Tutorials)
  • Hello World
  • Development Updates
  • The cheese tutorials

  • Some notes on structuring apps
  • To upload or install an app, you need to put all the app's files in a zipfile. All html snippets and javascript and css files, as well as the app_config.js file should be in the root. A folder called "static" should hold static files used by the app - eg pictures and sounds files etc.
  • Once you upload an app, the app's files are copied to a folder on your freezr file system called "app_files", under a directory with the name of the app, and they are served from there.
  • By convention, and for scalability's sake, each app's full name should be in a "reverse domain name notation", with the actual app name at the end - eg "com.example.exampleapp". (Parts of the name after the first space are ignored. So you can call the file: "com.example.exampleapp version feb 4".)
  • Without an app_config file, freezr just grabs index.html and index.css and index.js. To add more pages and multiple js / css files, you can use the app_config - a sort of manifest for the app, where you can define the resources each app or app page needs. See here.
  • All permissioning requests are also done via the app_config file.
  • You cannot add node.js modules to your apps - they need to be pure client-side.

    Rules for apps
  • Rule #1. Apps should never link to, or access the internet (except via the freezr_core api.) freezr is meant to create a sand-boxed environment, like apps on your phone - so apps should not make any ajax (XMLHttpRequest) calls. This is because you wouldn't want apps to send your data out to the internet wihtout your knowledge.
  • Rule #2. The database should only be accessed via the freezr_core api. Don't try to access other apps' data, or circumvent the freezr permissioning system
  • Rule #3. Apps cannot use "eval" statements or to create / include scripts elements dynamically , or do anything else that circumvents rules number 1 and 2. All external js files should be declared in the app_config.
  • Rule #4. To make it easier to enforce rule # 1 and 2 in the future, apps shouldn't use any variables with "freezr" or "freezer" in them. That would just make life more difficult! Similarly, the freezer_restricted functions should not be called by your javascript code.

    (Only the "freezr" functions should be accessed by apps. The "freezer_restricted" functions shouldn't be called by your app.)

    Learn more about freezr's security and how these rules are currently enforced here.