edrex / pillowfork

A real-time collaborative writing experiment with branches, built on content addressable storage.
http://pillowfork.pdxhub.org/
9 stars 0 forks source link

Pillowfork

A shared space for experimental storytelling.

Every page is an opportunity to take the narrative in a new direction. All branches coexist for the reader to explore.

Uses

Technology

Pillowfork is a CouchApp. The vast majority of the app code is “client-side” (runs in the user’s browser). Data from the server is synchronized with each client, and stored in client-side storage (see IndexedDB) if available. Additionally, draft content is stored in the author’s browser (this works even in older browsers) until the author is ready to publish it. This enables two interesting modes:

Theory

Pillowfork uses a data structure which is similar to that used by Git.

Get involved

Installation

Prereqs

  1. Install or provision a CouchDB instance.
    • Iriscouch works, but we found the free plan to be too unreliable.
    • For local development on OSX, we use brew install couchdb (installs quick with Erlang from a “bottle”).
    • Ubuntu: Pillowfork.com is running Ubuntu Precise with the CouchDB packages from this PPA. More recent Ubuntu releases have up-to-date CouchDB packages.
  2. Build the BrowserID authentication plugin to support passwordless signin. Use this branch. TODO: more detail and maybe a pre-built copy of the plugin.
  3. Prereqs for building the CouchApp, only needed on your dev machine:
    • Node.JS
    • erica couchapp cli, which must be built using Erlang and rebar. There are also Python (couchapp/couchapp) and Node.js (grunt-couch) implementations, which work fine but do full upload on each run and so are much slower in development.

TODO: these install instructions are out of date. I’m transitioning to Gulp as the task runner.

npm install -g grunt-cli gulp
npm install
# pulls down webdriver stuff
grunt install

Happy forking!