Abelujo - free software to manage independent book (and records) shops.
This project is at its debut stage. However it is already possible to:
look up for books, either by keywords or by isbn/ean (which works with a barcode scanner). See the https://gitlab.com/vindarel/bookshops library. You can currently search for:
look up for CDs (via discogs.com)
do an inventories of your stock,
manage lists of books, export them to csv and pdf (with barcodes),
send an email to distributors to order books,
manage deposits and distributors, see the balance of your deposits,
sell books, see conflicts of distributors, see the history,
import data from a LibreOffice Calc file (.ods) (experimental, cli only. See the user documentation).
It is translated to english, french and spanish.
We base our work on the software specifications from the Ruche project (to which we particpated): http://ruche.eu.org/wiki/Specifications_fonctionnelles. We wrote there what we understood about the work of a bookseller (like how to manage different distributors, how to manage deposits, etc). You should read it and tell us wether or not what we are doing will suit your needs (I'll translate this document to english one day or another, but you should tell me now if you're interested).
Abelujo means Beehive in Esperanto.
Feedback welcomed at ehvince at mailz dot org.
Instructions for Debian 8.
(see below to install without sudo)
Get the sources:
git clone --recursive https://gitlab.com/vindarel/abelujo.git
it creates the directory "abelujo":
Install the required dependencies for Debian (Ubuntu/LinuxMint/etc):
Also install the Nodejs platform and the yarn package manager (instead of npm):
sudo make install-nodejs
Create and activate a virtual environment (so than we can install python libraries locally, not globally to your system). Do as you are used to, or do the following:
source venv_create.sh # [venvname] (optional argument) workon abelujo pip install --upgrade pip # v9 or above is recommended.
now your shell prompt should show you are in the
virtualenv. To quit the virutal env, type
deactivate. To enter it,
workon \<TAB\> abelujo.
To install the dependencies, create and populate the database, run:
make install # and if bower asks for the version of Angular, choose version #1.3.20.
We are done ! Now to try Abelujo, run the development server like this:
make run # or set the port with: # python manage.py runserver 9876
and open your browser to http://127.0.0.1:8000 (admin/admin).
Enjoy ! Don't forget to give feedback at ehvince at mailz dot org !
Install without sudo
make debian-nosudo make install-nosudo
please read the Makefile in this particular case.
How to update
To update, you need to: pull the sources (
git pull --rebase),
install new packages (system and python-wide), run the database
migrations, build the static assets and, in production, collect the
In the virtual env, run:
make update # git pull --rebase # git submodule update --remote # install pip, migrate, gulp, collecstatic, compile transalation files
Django project (1.8), in python (2.7), with AngularJS (1.3) and the Django Rest Framework (partly).
We also use:
- jade templates, which compile to html, and pyjade for the Django integration
- Bootstrap's CSS and django-bootstrap3
- the Huey asynchronous task queue.
Read more about our tools choices to understand better what does what and how everything works together.
As a complement to the installion procedure above, you also need to install development dependencies that are listed in another requirements file::
and npm packages to run end to end tests:
make npm-dev # packages listed in devDependencies of packages.json
Additional management commands start with
private token in a
sentry.txt file. The settings will see and read
To get Fabric send it to the remote instance on install (
fab save_variables), add the token into your
sentry_token (see the fabfile).
python manage.py raven test and see the new message in your dashboard.
Run unit tests
See the scripts in
scripts/ to load data (specially shelves
names), in different languages.
If you get:
OperationalError: no such column: search_card.card_type_id
it is probably because you pulled the sources and didn't update your
DB. Use database migrations (
We have developer documentation: http://dev.abelujo.cc/