Django Hordak

Django Hordak is the core functionality of a double entry accounting system. It provides thoroughly tested core models with relational integrity constrains to ensure consistency.

Hordak also includes a basic accounting interface. This should allow you to get up-and-running quickly. However, the expectation is that you will either heavily build on this example or use one of the interfaces detailed below.

Interfaces which build on Hordak include:

  • battlecat – General purpose accounting interface (work in progress)
  • swiftwind – Accounting for communal households (work in progress)


Hordak is tested against:

  • Django >= 2.2, <= 4.0
  • Python >= 3.6
  • Postgres >= 9.5

Postgres is required, MySQL is unsupported. This is due to the database constraints we apply to ensure data integrity. MySQL could be certainly supported in future, volunteers welcome.

Current limitations

Django Hordak currently does not guarantee sequential primary keys of database entities. IDs are created using regular Postgres sequences, and as a result IDs may skip numbers in certain circumstances. This may conflict with regulatory and audit requirements for some projects. This is an area for future work (1, 2, 3, 4).

Indices and tables