Booki User Guide

Technology Used in Booki

Booki is Python based, built with the (bare) Django framework, and using JQuery for dynamic page elements. Postgres is our prefered database, and we use a Redis database for caching.

XHTML is the file format for content. Booki uses the Xinha WYSIWYG editor for creating content. epub is increasingly becoming the default import format for content coming from external projects.

The PDF generation requires Webkit as a rendering engine - we have chosen this above other PDF rendering engines since Webkit has unicode, CSS, and bi-directional text support. However we would rather use the Mozilla Firefox layout engine (NGLayout & XPFE projects but usually known somewhat incorrectly as Gecko) and this will be implemented as the default renderer in time.

There are other tools required for some outputs from Objavi, for example the rendering of .odt requires OpenOffice to be installed with unoconv.

The format for exchanging books between the three core components (Espri, Objavi, and Booki) is a format defined by the project called Booki-zip. Booki-zip contains mostly xhtml files and a JSON file.

The Web/IRC gateway optionally require a standalone IRC service running locally.

For development we will use Apache2 for http delivery, but other deployments can use any http service.

To be Implemented

Content will eventually be stored in GIT. Pootle will also eventually be integrated into the core of Booki, and hence interface texts will be kept in Portable Object files (.po). Rabbitmq will be implemented to manage message queues (such as import or export requests). We would like to implement OpenID for logins.


Each release will be as source. Beta and later releases will also be available as Debian .deb packages. The license is GPL2+.


Django -
JQuery -
Postgres -
Redis -
Xinha -
epub -
Webkit -
Mozilla Layout Engine -
Pootle -
OpenID -
Rabbitmq -