![django ledger logo](https://us-east-1.linodeobjects.com/django-ledger/logo/django-ledger-logo@2x.png)
# Django Ledger
## A Double Entry Accounting Engine for Django
Django Ledger is a powerful financial management system built on the Django Web Framework. It offers a simplified API for handling complex accounting tasks in financially driven applications.
[Join our Discord](https://discord.gg/c7PZcbYgrc) | [Documentation](https://django-ledger.readthedocs.io/en/latest/) | [QuickStart Notebook](https://github.com/arrobalytics/django-ledger/blob/develop/notebooks/QuickStart%20Notebook.ipynb)
## Key Features
- High-level API
- Double entry accounting
- Hierarchical Chart of Accounts
- Financial statements (Income Statement, Balance Sheet, Cash Flow)
- Purchase Orders, Sales Orders, Bills, and Invoices
- Financial ratio calculations
- Multi-tenancy support
- Ledgers, Journal Entries & Transactions
- OFX & QFX file import
- Closing Entries
- Inventory management
- Unit of Measures
- Bank account information
- Django Admin integration
- Built-in Entity Management UI
## Getting Involved
- **Feature Requests/Bug Reports**: Open an issue in the repository
- **For software customization, advanced features and consulting services**:
[Contact us](https://www.miguelsanda.com/work-with-me/) or email msanda@arrobalytics.com
- **Contribute**: See our [contribution guidelines](https://github.com/arrobalytics/django-ledger/blob/master/Contribute.md)
## Who Should Contribute?
We're looking for contributors with:
- Python and Django programming skills
- Finance and accounting expertise
- Interest in developing a robust accounting engine API
If you have relevant experience, especially in accounting, we welcome your pull requests or direct contact.
# Installation
Django Ledger is a [Django](https://www.djangoproject.com/) application. If you haven't, you need working knowledge of
Django and a working Django project before you can use Django Ledger. A good place to start
is [here](https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-a-project).
Make sure you refer to the django version you are using.
The easiest way to start is to use the zero-config Django Ledger starter template. See
details [here](https://github.com/arrobalytics/django-ledger-starter). Otherwise, you may create your
project from scratch.
To create a new Django Ledger project:
* Make sure you have the latest version of python [here](https://www.python.org/) (recommended).
* Install Django:
```shell
pip install django
```
* Install Python [Pipenv](https://pipenv.pypa.io/en/latest/) (python package manager):
```shell script
pip install pipenv
```
* Go to your desired development folder and create a new django project:
```shell
django-admin startproject django_ledger_project && cd django_ledger_project
```
* Install Django on you virtual environment.
```shell
pipenv install django
```
* Install Django Ledger
```shell script
pipenv install django-ledger[graphql,pdf]
```
* Activate your new virtual environment:
```shell
pipenv shell
```
* Add django_ledger to INSTALLED_APPS in you new Django Project.
```python
INSTALLED_APPS = [
...,
'django_ledger',
...,
]
```
* Perform database migrations:
```shell
python manage.py migrate
```
* Add Django SuperUser and follow the prompts.
```shell
python manage.py createsuperuser
```
* Add URLs to your project's __urls.py__:
```python
from django.urls import include, path
urlpatterns = [
...,
path('ledger/', include('django_ledger.urls', namespace='django_ledger')),
...,
]
```
* Run your project:
```shell
python manage.py runserver
```
* Navigate to Django Ledger root view assigned in your project urlpatterns setting (
typically http://127.0.0.1:8000/ledger
if you followed this installation guide).
* Use your superuser credentials to login.
# 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.
```shell
git clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger
```
3. Install PipEnv, if not already installed:
```shell
pip install -U pipenv
```
4. Create virtual environment.
```shell
pipenv install
```
If using a specific version of Python you may specify the path.
```shell
pipenv install --python PATH_TO_INTERPRETER
```
5. Activate environment.
```shell
pipenv shell
```
6. Apply migrations.
```shell
python manage.py migrate
```
7. Create a Development Django user.
```shell
python manage.py createsuperuser
```
8. Run development server.
```shell
python manage.py runserver
```
# How To Set Up Django Ledger for Development using Docker
1. Navigate to your projects directory.
2. Give executable permissions to entrypoint.sh
```shell
sudo chmod +x entrypoint.sh
```
3. Add host '0.0.0.0' into ALLOWED_HOSTS in settings.py.
4. Build the image and run the container.
```shell
docker compose up --build
```
5. Add Django Superuser by running command in seprate terminal
```shell
docker ps
```
Select container id of running container and execute following command
```shell
docker exec -it containerId /bin/sh
```
```shell
python manage.py createsuperuser
```
6. Navigate to http://0.0.0.0:8000/ on browser.
# Run Test Suite
After setting up your development environment you may run tests.
```shell
python manage.py test django_ledger
```
# Screenshots
![django ledger entity dashboard](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_entity_dashboard.png)
![django ledger balance sheet](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_income_statement.png)
![django ledger income statement](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_balance_sheet.png)
![django ledger bill](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_bill.png)
![django ledger invoice](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_invoice.png)
# Financial Statements Screenshots
![balance_sheet_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/BalanceSheetStatement.png)
![income_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/IncomeStatement.png)
![cash_flow_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/CashFlowStatement.png)
Raw data
{
"_id": null,
"home_page": null,
"name": "django-ledger",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Miguel Sanda <msanda@arrobalytics.com>",
"keywords": "django, finance, bookkeeping, accounting, balance sheet, income statement, general ledger, money, engine",
"author": null,
"author_email": "Miguel Sanda <msanda@arrobalytics.com>",
"download_url": null,
"platform": null,
"description": "![django ledger logo](https://us-east-1.linodeobjects.com/django-ledger/logo/django-ledger-logo@2x.png)\n\n# Django Ledger\n\n## A Double Entry Accounting Engine for Django\n\nDjango Ledger is a powerful financial management system built on the Django Web Framework. It offers a simplified API for handling complex accounting tasks in financially driven applications.\n\n[Join our Discord](https://discord.gg/c7PZcbYgrc) | [Documentation](https://django-ledger.readthedocs.io/en/latest/) | [QuickStart Notebook](https://github.com/arrobalytics/django-ledger/blob/develop/notebooks/QuickStart%20Notebook.ipynb)\n\n## Key Features\n\n- High-level API\n- Double entry accounting\n- Hierarchical Chart of Accounts\n- Financial statements (Income Statement, Balance Sheet, Cash Flow)\n- Purchase Orders, Sales Orders, Bills, and Invoices\n- Financial ratio calculations\n- Multi-tenancy support\n- Ledgers, Journal Entries & Transactions\n- OFX & QFX file import\n- Closing Entries\n- Inventory management\n- Unit of Measures\n- Bank account information\n- Django Admin integration\n- Built-in Entity Management UI\n\n## Getting Involved\n\n- **Feature Requests/Bug Reports**: Open an issue in the repository\n- **For software customization, advanced features and consulting services**: \n[Contact us](https://www.miguelsanda.com/work-with-me/) or email msanda@arrobalytics.com\n- **Contribute**: See our [contribution guidelines](https://github.com/arrobalytics/django-ledger/blob/master/Contribute.md)\n\n## Who Should Contribute?\n\nWe're looking for contributors with:\n- Python and Django programming skills\n- Finance and accounting expertise\n- Interest in developing a robust accounting engine API\n\nIf you have relevant experience, especially in accounting, we welcome your pull requests or direct contact.\n\n# Installation\n\nDjango Ledger is a [Django](https://www.djangoproject.com/) application. If you haven't, you need working knowledge of\nDjango and a working Django project before you can use Django Ledger. A good place to start\nis [here](https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-a-project).\n\nMake sure you refer to the django version you are using.\n\nThe easiest way to start is to use the zero-config Django Ledger starter template. See\ndetails [here](https://github.com/arrobalytics/django-ledger-starter). Otherwise, you may create your\nproject from scratch.\n\nTo create a new Django Ledger project:\n\n* Make sure you have the latest version of python [here](https://www.python.org/) (recommended).\n\n* Install Django:\n\n```shell\npip install django\n```\n\n* Install Python [Pipenv](https://pipenv.pypa.io/en/latest/) (python package manager):\n\n```shell script\npip install pipenv\n```\n\n* Go to your desired development folder and create a new django project:\n\n```shell\ndjango-admin startproject django_ledger_project && cd django_ledger_project\n```\n\n* Install Django on you virtual environment.\n\n```shell\npipenv install django\n```\n\n* Install Django Ledger\n\n```shell script\npipenv install django-ledger[graphql,pdf]\n```\n\n* Activate your new virtual environment:\n\n```shell\npipenv shell\n```\n\n* Add django_ledger to INSTALLED_APPS in you new Django Project.\n\n```python\nINSTALLED_APPS = [\n ...,\n 'django_ledger',\n ...,\n]\n```\n\n* Perform database migrations:\n\n```shell\npython manage.py migrate\n```\n\n* Add Django SuperUser and follow the prompts.\n\n```shell\npython manage.py createsuperuser\n```\n\n* Add URLs to your project's __urls.py__:\n\n```python\nfrom django.urls import include, path\n\nurlpatterns = [\n ...,\n path('ledger/', include('django_ledger.urls', namespace='django_ledger')),\n ...,\n]\n```\n\n* Run your project:\n\n```shell\npython manage.py runserver\n```\n\n* Navigate to Django Ledger root view assigned in your project urlpatterns setting (\n typically http://127.0.0.1:8000/ledger\n if you followed this installation guide).\n* Use your superuser credentials to login.\n\n# How To Set Up Django Ledger for Development\n\nDjango Ledger comes with a basic development environment already configured under __dev_env/__ folder not to be used\nfor production environments. If you want to contribute to the project perform the following steps:\n\n1. Navigate to your projects directory.\n2. Clone the repo from github and CD into project.\n\n```shell\ngit clone https://github.com/arrobalytics/django-ledger.git && cd django-ledger\n```\n\n3. Install PipEnv, if not already installed:\n\n```shell\npip install -U pipenv\n```\n\n4. Create virtual environment.\n\n```shell\npipenv install\n```\n\nIf using a specific version of Python you may specify the path.\n\n```shell\npipenv install --python PATH_TO_INTERPRETER\n```\n\n5. Activate environment.\n\n```shell\npipenv shell\n```\n\n6. Apply migrations.\n\n```shell\npython manage.py migrate\n```\n\n7. Create a Development Django user.\n\n```shell\npython manage.py createsuperuser\n```\n\n8. Run development server.\n\n```shell\npython manage.py runserver\n```\n\n# How To Set Up Django Ledger for Development using Docker\n\n1. Navigate to your projects directory.\n\n2. Give executable permissions to entrypoint.sh\n\n```shell\nsudo chmod +x entrypoint.sh\n```\n\n3. Add host '0.0.0.0' into ALLOWED_HOSTS in settings.py.\n\n4. Build the image and run the container.\n\n```shell\ndocker compose up --build\n```\n\n5. Add Django Superuser by running command in seprate terminal\n\n```shell\ndocker ps\n```\n\nSelect container id of running container and execute following command\n\n```shell\ndocker exec -it containerId /bin/sh\n```\n\n```shell\npython manage.py createsuperuser\n```\n\n6. Navigate to http://0.0.0.0:8000/ on browser.\n\n# Run Test Suite\n\nAfter setting up your development environment you may run tests.\n\n```shell\npython manage.py test django_ledger\n```\n\n# Screenshots\n\n![django ledger entity dashboard](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_entity_dashboard.png)\n![django ledger balance sheet](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_income_statement.png)\n![django ledger income statement](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_balance_sheet.png)\n![django ledger bill](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_bill.png)\n![django ledger invoice](https://us-east-1.linodeobjects.com/django-ledger/public/img/django_ledger_invoice.png)\n\n# Financial Statements Screenshots\n\n![balance_sheet_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/BalanceSheetStatement.png)\n![income_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/IncomeStatement.png)\n![cash_flow_statement_report](https://django-ledger.us-east-1.linodeobjects.com/public/img/CashFlowStatement.png)\n",
"bugtrack_url": null,
"license": "GPLv3 License",
"summary": "Double entry accounting system built on the Django Web Framework.",
"version": "0.7.3",
"project_urls": {
"Bug Tracker": "https://github.com/arrobalytics/django-ledger/issues",
"Documentation": "https://django-ledger.readthedocs.io/en/latest/",
"Homepage": "https://www.djangoledger.com",
"Source Code": "https://github.com/arrobalytics/django-ledger"
},
"split_keywords": [
"django",
" finance",
" bookkeeping",
" accounting",
" balance sheet",
" income statement",
" general ledger",
" money",
" engine"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "796237804aed1fd9de249c98aaed95179f8778ac58015876f6ae82693490cef4",
"md5": "fe9b86d7427c914d0efc3c1921dc772c",
"sha256": "a126ae91d0783434ac54a886cce03ba8cc7cecd23bc324dc188be2898403bb8f"
},
"downloads": -1,
"filename": "django_ledger-0.7.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fe9b86d7427c914d0efc3c1921dc772c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 2645925,
"upload_time": "2025-01-07T14:03:15",
"upload_time_iso_8601": "2025-01-07T14:03:15.822886Z",
"url": "https://files.pythonhosted.org/packages/79/62/37804aed1fd9de249c98aaed95179f8778ac58015876f6ae82693490cef4/django_ledger-0.7.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-07 14:03:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "arrobalytics",
"github_project": "django-ledger",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "django-ledger"
}