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:
- A robust, well tested set of built in features
- Rapid development
- An ecosystem developers are familiar with
- 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:
- Django Bootstrap (for easy bootstrap templates)
- Django Rest Framework (for the Rest API)
- Django Summernote & JQTE (for Rich Text Editing)
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
Workflow stages include:
- optional proposal
- internal review
- peer review
- optional copy editing
- optional indexing
- optional typesetting
We’re now working towards a public release that will allow others to use the system end to end.