{"id":13468219,"url":"https://github.com/arrobalytics/django-ledger","last_synced_at":"2025-05-14T02:04:55.498Z","repository":{"id":37845447,"uuid":"155289518","full_name":"arrobalytics/django-ledger","owner":"arrobalytics","description":"Django Ledger is a double entry accounting system and financial analysis engine built on the Django Web Framework.","archived":false,"fork":false,"pushed_at":"2025-05-10T23:32:15.000Z","size":14787,"stargazers_count":1173,"open_issues_count":23,"forks_count":263,"subscribers_count":82,"default_branch":"master","last_synced_at":"2025-05-10T23:45:19.728Z","etag":null,"topics":["accounting","bookkeeping","cashmanagement","django","django-application","django-framework","django-ledger","django-project","entities","finance","financial","financial-analysis-engine","forecasting","ledger-journal","quickbooks"],"latest_commit_sha":null,"homepage":"https://www.djangoledger.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arrobalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-29T22:25:37.000Z","updated_at":"2025-05-10T23:30:50.000Z","dependencies_parsed_at":"2024-03-22T13:29:01.544Z","dependency_job_id":"8ae6fc49-832d-4225-83a4-677e10d52501","html_url":"https://github.com/arrobalytics/django-ledger","commit_stats":{"total_commits":735,"total_committers":17,"mean_commits":43.23529411764706,"dds":0.07891156462585036,"last_synced_commit":"226a506a002962ecf0257ad8c902f819ff03246b"},"previous_names":[],"tags_count":148,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrobalytics%2Fdjango-ledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrobalytics%2Fdjango-ledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrobalytics%2Fdjango-ledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrobalytics%2Fdjango-ledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arrobalytics","download_url":"https://codeload.github.com/arrobalytics/django-ledger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052690,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accounting","bookkeeping","cashmanagement","django","django-application","django-framework","django-ledger","django-project","entities","finance","financial","financial-analysis-engine","forecasting","ledger-journal","quickbooks"],"created_at":"2024-07-31T15:01:07.237Z","updated_at":"2025-05-14T02:04:55.466Z","avatar_url":"https://github.com/arrobalytics.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"![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\nfor handling complex accounting tasks in financially driven applications.\n\nCreated and developed by [Miguel Sanda](https://www.miguelsanda.com).\n\n[FREE Get Started Guide](https://www.djangoledger.com/get-started) | [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 \u0026 Transactions\n- OFX \u0026 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\nAll pull requests are welcome, as long as they address bugfixes, enhancements, new ideas, or add value to the project in any shape or form.\nPlease refrain from submitting pull requests that focus solely on code linting, refactoring, or similar cosmetic changes.\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\n  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\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 \u0026\u0026 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\nAlternatively, you can use:\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 \u0026\u0026 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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farrobalytics%2Fdjango-ledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farrobalytics%2Fdjango-ledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farrobalytics%2Fdjango-ledger/lists"}