FRIENDS#UNHOSTED - Own your network!
JavaScript Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Own your network!

FRIENDS#UNHOSTED is a new type of social network site where you own your network and uploads, not the site.

It is based on unhosted technology.

The code is licensed under the AGPLv3 license (



Clone or fork from git (this repo).

To run the tests


Install node:

Javascript dependencies

Install the javascript dependencies via npm install

Maybe you still need to sudo npm install --global buster

Get a local storage (express-storage):

Clone or fork

git clone

Copy config file to parent dir:

cp copy_to_parent_dir_as_config.js ../config.js

Then run express-storage with (in express-storage root):

sudo node server.js

This should start a remote storage on port 80.

Start selenium standalone server


Download chromedriver if you want to test in chrome:

java -jar node_modules/selenium/lib/runner/selenium-server-standalone-2.20.0.jar -log logs/seleniumserver.log"/opt/google/chrome/google-chrome""/path/to/chromedriver" &

You probably have to change the path to chrome and chromedriver.

Start buster unit test server

(also in

buster server &

Check the url shown in the logs, typically http://localhost:1111, and surf there with any and all the browsers you want to run the unit tests on, and register your browser.

Start an http server for serving the F#U site

(also in

Install node http server: sudo npm install -g http-server

cd site/
http-server -p 8000 > ../logs/httpserver.log &
cd -

Otherwise, serve the site folder, the actual F#U site form this repo, from IIS, apache or whatever makes your skirt blow.

Actually run the tests

buster test

If you only want to run the unit tests:

buster test --browser

If you only want to run the selenium tests:

buster test --node


Architecture-ish description

index.html contains all html and the knockoutjs templates.

main.js contains all presentation related javascript, including kncockout and jquery.

friendsUnhostedApi.js is the api that main.js uses to talk to the remote storage.

remoteAdapter.js is a wrapper for remoteStorage.js based on

remoteStorage.js is the "official" unhosted library to use

css, img you can probably figure out.


In browser resides the functional test that are run in a browser using selenium and webdriverjs from busterjs

In unit resides the unit tests that are run in all registered browsers in busterjs.

If this sounds corny, read up on BusterJS ( :-)

Code formatting

In the root, run

node format.js <file1> <file2> ... <fileN>

Works for js, html and css.

NOTE: We have not started using this in the files. Test it and git reset --hard. Soon, very soon, it will be mandatory.