Skip to content
(NOTE! This has not been updated since Elm 0.15.1.) Streamlined long-form writing software. Written in Elm.
JavaScript Elm HTML CoffeeScript CSS
Branch: master
Clone or download


Streamlined long-form writing software. Written in Elm. [![build status][1]][2]

Try it at


Dreamwriter is a browser-based writing app with a few goals in mind. (Not all of these have been reimplemented yet.)

  • Let you edit a 100,000-word novel seamlessly in a single document in the browser.
  • Autosave as you write, both to your local device and to remote backups.
  • The text in the editor ought to look as close to the final product as possible, without the interference of annotations or other UI elements.
  • There should be a logical concept of chapters for navigation and the like, but the document should not be split up into multiple documents to accomplish this.
  • You should be able to take notes which accompany the document.
  • The app should work completely offline, including being able to bring up the site without an Internet connection.
  • It should offer a "distraction-free mode" where by default all you can see on your screen is the text.


Dreamwriter was originally written in CoffeeScript and has been rewritten in Elm. It compiles to static files only (and requires no server-side code), and is hosted entirely on Amazon S3.

It can only run in modern browsers, as it uses the following browser features:

You can compare the two code bases back when they were at feature parity: dreamwriter-coffee and dreamwriter. Naturally, development on the CoffeeScript version has ceased in favor of the more featureful Elm version.

The Strange Loop 2014 talk Web Apps without Web Servers incorporated Dreamwriter as a case study.


Install node.js if you do not already have it. Then:

  1. git clone
  2. cd dreamwriter
  3. npm install
  4. npm install -g grunt-cli bower
  5. bower install
  6. grunt

Now you can visit localhost:8000 in your browser! [1]: [2]:

You can’t perform that action at this time.