/django-ledger

A bookkeeping & financial analysis engine for the Django Framework. UNDER ACTIVE DEVELOPMENT & NOT STABLE YET.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

django ledger logo

A Bookkeeping & Financial Analysis Engine for the Django Framework.

The Django Ledger Project is led and maintained by Miguel Sanda aiming to provide an open source financial engine to power financially driven applications using Python and the Django Framework. Unfortunately due to its complexity we cannot offer a stable release until all features on the Roadmap has been implemented.

Finance and Accounting is a complicated subject. Django Ledger is different from other Django projects as it aims to provide a developer-friendly accounting engine while providing a reliable and extensible API. This project in particular, not only requires Python AND Django programming experience, but also finance and accounting experience.

Due to time limitations, the developer is focusing on the development of new features.
This project can greatly benefit from contributions towards Documentation and Unit Tests.

Django Ledger supports:

  • Chart of Accounts.
  • Financial Statements (Income Statement & Balance Sheets).
  • Automatic financial ratio & insight calculations.
  • Multi tenancy (multiple users/clients).
  • Hierarchical entity management (for consolidated financial statements - v0.9).
  • Self-contained Ledgers, Journal Entries & Transactions.
  • Basic OFX & QFX file import.
  • Bills & Invoices with optional accruable functionality.
  • Basic navigational templates.
  • Entity administration & entity manager support.
  • Items, lists & inventory management.
  • Bank Accounts.

WARNING: Currently this project is under active development, it is not stable and is not recommended for production environments. Due to its high complexity, breaking changes may occur in future releases and migration backwards compatibility may not be preserved until the first stable release. The author is actively working to provide a stable release as soon as possible and to incorporate the following functionality:

High Level Road Map

  • Cash flow statement.
  • Entity Nesting and Corporate Structures.
  • Tax line mapping.
  • Package documentation.
  • Collaborators & Permissions.
  • API Implementation.
  • Unit Tests & Behavior Driven Development Tests.
  • And a lot more stuff...

For more details please check our full v1.0 Roadmap.

Want to contribute?

This project is actively looking for contributors. Any financial and/or accounting experience is a big plus. If you have prior accounting experience and want to contribute, don't hesitate to contact me. See contribution guidelines.

Quick Start

Django Ledger comes with a default CoA ready to use or you could use your own. Make sure to select the appropriate option when creating new entities.

  • Install Django Ledger
pip install git+https://github.com/arrobalytics/django-ledger.git

To install Django Virtual Environment pip install pipenv

  • Or with pipenv:
pipenv install git+https://github.com/arrobalytics/django-ledger.git
  • Add django_ledger to INSTALLED_APPS
INSTALLED_APPS = [
    ...,
    'django_ledger',
    ...,
]
  • Add URLs to your project:
from django.urls import include, path

urlpatterns = [
    ...,
    path('ledger/', include('django_ledger.urls', namespace='django_ledger')),
    ...,
]

How To Set Up Django Ledger for Development

Django Ledger comes with a basic development environment already configured under dev_env/ folder not to be used for production environments. If you want to contribute to the project perform the following steps:

  1. Navigate to your projects directory.
  2. Clone the repo from github and CD into project.
git clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger
  1. Install PipEnv, if not already installed:
pip install -U pipenv
  1. Create virtual environment.
pipenv install

If using a specific version of Python you may specify the path.

pipenv install --python PATH_TO_INTERPRETER
  1. Activate environment.
pipenv shell
  1. Apply migrations.
python manage.py migrate
  1. Create a Development Django user.
python manage.py createsuperuser
  1. Run development server.
python manage.py runserver

Run Test Suite

After setting up your development environment you may run tests.

python manage.py test django_ledger

Screenshots

django ledger entity dashboard django ledger balance sheet django ledger income statement django ledger bill django ledger invoice