Skip to content
Read e-books on the web.
Python JavaScript HTML CSS
Branch: master
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.


Paperback is a web based e-book reading system, in 2 parts:

  1. Ebla, an e-book reading web app.

  2. Melk, utility to format e-book files for reading in Ebla.

Currently the only e-book file format supported by Melk/Ebla is EPUB 2.

See it in action.


Ebla and Melk are proof of concepts, further development is required!

This project is open source and MIT licenced, so please do get involved :)

Plan is to use GitHub issues to guide the development process.


Ebla is an e-book reading web app.

Initally designed and developed by monospaced, thegingerbloke and carlotartaglia, Ebla has been open sourced as part of this project.


Ebla needs to be running on the http:// protocol, so once you have downloaded or cloned the repository, you will need to run it on a web server.

If you’re on OS X or Linux, you can simply:

  1. Navigate a console to the paperback/ directory

  2. Enter python -m SimpleHTTPServer 8888

  3. Navigate a browser to http://localhost:8888/

Then open the included sample book and start reading!

Build Requirements

Ebla uses Sass and Grunt to preprocess and build its CSS and JavaScript files.

It comes pre-built, so you can start using it straight away. To build a new version, you will need to have Ruby, Sass, Node and NPM installed.

If you’re on OS X or Linux you probably have Ruby installed already; test with ruby -v in your terminal. When you’ve confirmed you have Ruby installed, run gem install sass to install Sass.

You can test for Node and NPM with node -v and npm -v in your terminal. If you don't have them, head over to

To build Ebla (with the required dependencies); from inside the ebla/ directory run grunt to build once, or grunt watch to build automatically whenever a Sass or JavaScript file is updated.


Ebla is using AngularJS to read the JSON files required to display each book. However, there is no intrinsic dependancy on AngularJS in Ebla’s current design—these aspects of the app could happily be rewritten with a server-side language, with the added benefit of removing the JavaScript dependency altogether (as the reader itself includes a no-js fallback).


Melk is a Python command line utility that formats and stores EPUB files for reading in Ebla.


python melk <options> /path/to/file.epub
python melk <options> /path/to/epubs


--version                show program's version number and exit
-h, --help               show this help message and exit
-b BOOKS, --books=BOOKS  specify path to books relative to script directory defaults to ../books/


  • Python 2.6+ (not tested on Python 3)

How it works

  • Converts the XML metadata and navigation components of the EPUB file to JSON.

  • Standarises the markup components of the epub file as XHTML, standardises their <head> elements, adds the Ebla stylesheet, and passes the plain text through typogrify filters to yield typographically-improved HTML.

  • Creates a folder for each converted book in a specified directory and catalogs the directory’s contents as JSON.

Why the names?

The ancient city of Ebla is famous for its archive of roughly 20,000 cuneiform tablets, dating from around 2350 BC and written in both the Sumerian and Eblaite languages. The Ebla archive is considered (by some) to be the world’s oldest library.

Founded in the 12th century, the monastic library of Melk Abbey became renowned for its extensive manuscript collection. The monastery’s scriptorium was also a major site for the production of manuscripts.

The first Penguin paperbacks represented ease, accessibility, and democratisation of good literature—a paperback revolution.

Sample books

Enjoy some Paperbacks!

You can’t perform that action at this time.