Skip to content
No description or website provided.
JavaScript Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


What is this?

This is an unhosted web app for basic messaging. It uses remoteStorage.js to sync data via the remotestorage protocol. You can use it to read your email.


There are three parts to this app:

  • a server that delivers the app to the browser and does nothing else,
  • the app itself, which is client-side javascript, and
  • a SMTP bridge, which is a plugin for the Haraka SMTP Server, written in server-side Javascript.

The storage itself is brought by the user. Currently the user also needs to setup the STMP bridge theirselves.

Server side

A simple static webserver. Instead of 404, it falls back to 200 and delivers index.html. That way URLs created by history.pushState still resolve to start the app. Implemented in Ruby (Sinatra).

Setup (assuming you have a working ruby and rubygems installation):

gem install bundler



By default it listens on localhost:9292, use “-p 80” to run on default HTTP port. You may need root privileges to do that.

Client side

All the boring stuff (router, basic views, …) is within src/framework.

A remoteStorage messages module is drafted in src/remoteStorage-messages.js.

src/models/message.js contains glue code between app and messages module.

To figure out the rest, run the app and browse the code.

Bridge to SMTP

See my Haraka fork, it contains a plugin called “queue/remotestorage.js”. Alter config/remotestorage.ini to add your remotestorage credentials. The default configuration should work with the remotestorage example server.


Not sure yet.

Something went wrong with that request. Please try again.