Notes App That Treasures Your Data
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Documara: Notes App That Treasures Your Data

This is a dusty old project of mine. It's a web-based note-taking app that utilises Operational Transformation to sync notes.

This means it handles conflicts automatically and you should never lose anything you enter, even if you have the app open on multiple windows and type into them all at the same time.

For some motivation behind this project, see:

This is essentially a code-dump of a private repo. I'm happy to answer question but be prepared to do some spelunking.

TODO: move the code to sharedb?

Seems to be the maintained successor of sharejs. Let's investigate.


  1. Prerequisities: node, npm and redis

    yum install nodejs npm redis

  2. Install dependencies: $ npm install
  3. Run Redis: $ redis-server redis/redis.conf
  4. Run documara: $ make run

Adding a user

Run this:

$ PASSWORD=password \
    node_modules/coffee-script/bin/coffee --create-user

You should of course specify your own EMAIL and PASSWORD values. Redis has to be running for this to work, the app doesn't have to.


You should compile the static assets. They should be served by an asset server such as nginx. When running documara, set these environment variables:

PORT=8080  # or whatever
SESSION_SECRET=<a long secret string, shouldn't change when app restarts>


Get the images:

sudo docker pull redis:3
sudo docker pull tsedovic/node:$VERSION
sudo docker build -t tsedovic/documara:latest .

Push the images to the registry:

export VERSION=0.3.0   # This should match the `LABEL version` in Dockerfile
sudo docker tag tsedovic/documara:latest tsedovic/documara:$VERSION
sudo docker push tsedovic/documara:$VERSION
sudo docker push tsedovic/documara:latest

Run redis database:

sudo docker run -v /var/lib/docker/volumes/documara-redis:/data  \
    -d --name documara-redis redis:3 redis-server  \
    --appendonly yes --appendfsync everysec

NOTE: the data will be stored on the host at:

$ docker inspect  -f "{{range .Mounts}}{{.Source}}{{end}}" documara-redis

Which is generally under /var/lib/docker/volumes/.

Create users:

sudo docker run --rm -t -i --link documara-redis:redis \
    -e \
    -e PASSWORD=password tsedovic/documara \

Run documara application:

sudo docker run --link documara-redis:redis -d --name documara-app  \
    -p $HOST_PORT:8080 tsedovic/documara


AGPLv3 or later


Tomas Sedovic IRC: shadower