Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

RePo is a new HTML5 technique for decentralizing the web. Repo The Web is an experimental shim to provide cross browser support.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 src
Octocat-spinner-32 www
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
README.md

Repo the Web

A JavaScript shim which provides the registerProtocolHandler JavaScript API to browsers which have not implemented it yet.

Unlike most polyfills, this one must be centrally hosted as it uses localStorage to maintain protocol registrations.

Demo:

  1. Go to Fake Rhapsody and "Install Rhapsody".
  2. Go to Fake Music Blog and click one of the music links. Note: Fake bitcoin link to see what an unknown protocol does.
  3. Repo The Web config to see installed handlers or to delete them all.

RePo Shim Usage

A Music Service

<script src="http://dev.repotheweb.org:8001/include.js"></script>
<script>
navigator.xregisterProtocolHandler('music', 'http://your-domain.com/rph/uri#%s', 'Great Music App');
</script>

A Blog with Music Links

<p>Jimmie's <a href="music:musicbrainz.org/release/a5bbcaf9-5387-33e2-9411-902ac263666b">The Cry of Love</a></p>

TODO add meta tag example

Hacking on Demo

If you want to work localy on the demo, here is one way to do it.

$ sudo emacs /etc/hosts

Add the following to 127.0.0.1 entry

127.0.0.1 localhost my-machine dev.rhapsody.com dev.repotheweb.org music-blog.com

$ cp src/config.js-dist src/config.js
$ emacs bin/update.sh
$ bin/update.sh

# new terminal 1
$ cd www/repotheweb.org/
$ python -m SimpleHTTPServer 8001
# new terminal 2
$ cd www/rhapsody.com/
$ python -m SimpleHTTPServer 8002
# new terminal 3
$ cd www/music-blog.com/
$ python -m SimpleHTTPServer 8003

# build
$ cd src
$ node ../lib/r.js -o baseUrl=. name=../lib/almond.js include=include out=../www/repotheweb.org/include.js wrap=true optimize=''
# Optional
$ node ../lib/r.js -o baseUrl=. name=../lib/almond.js include=include out=../www/repotheweb.org/include.min.js wrap=true
Something went wrong with that request. Please try again.