A Simple Monograph Workflow

Rua is Ubiquity Press’ Book Management System, having recently completed an internal Alpha we’re currently working on a Beta release, which will be tested in our Live environment. Initially Rua will be used only by our internal Production team for preparing a book for publication, but eventually it will be used for the entire workflow from Submission to Publication.


Choice of tech is important, so we set some requirements:

  1. A robust, well tested set of built in features
  2. Rapid development
  3. An ecosystem developers are familiar with
  4. Simple deployment

PHP is out of the window instantly. Its popular, sure, but its a nightmare.

We’re building a platform for use, primarily, within the Academic community, where the likes of R are popular, but the best suited (in the team’s opinion anyway) is probably Python. Python is a mature language, with a great community and good web frameworks like Django.

Rua is built using Django and Python, alongside some other Open Source projects including:

All of which can be easily installed using PIP or EASY_INSTALL.


As in, mucking around with… Django projects are really easy to setup and start playing with. They’re also not as complex to set up in production as you might think. Rua is currently lacking an install script, but you can set it up locally quite easily.

NB. Unless you’re super hardcore, you’ll need a unix-like (Linux/Mac etc) machine. Python/Windows can be a pain. We recommend you use VirtualEnvironment with VirtualEnvWrapper. Once these are installed, clone the repo with:

$ git clone https://github.com/ubiquitypress/rua.gitMake a virtual environment:$ mkvirtualenv ruaInstall the requirements:$ pip install -r requirements.txt

Pip will install all of the requirements into your VirtualEnvironment, this means it wont mess with anything else you’ve got installed on your machine. By default, Rua uses SQLite, for simplicities sake, but you can easily change the settings to use MySQL, Postgres or any of the other DBMS supported by Django. You may need to install an additional component to use a different DBMS.

Next, we’re going to sync and migrate the db, this will create the DB tables.

$ python manage.py syncdb
$ python manage.py migrate

Next we can load in some pre-configured fixtures of data

$ python manage.py loaddata core/fixtures/settinggroup.json
$ python manage.py loaddata core/fixtures/settings.json
$ python manage.py loaddata core/fixtures/cc-licenses.json
$ python manage.py loaddata core/fixtures/role.json
$ python manage.py loaddata core/fixtures/langs.json

Now we can run the server

$ python manage.py runserver

You can now access the site from your browser: http://localhost:8000

The Workflow

Workflow stages include:

We’re now working towards a public release that will allow others to use the system end to end.

Written by

Pub Tech developer for Birkbeck CTP

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store