A simple accounting application built with Python, Streamlit, and SQLAlchemy
Project description
Simple Accounting App
A simple accounting application built with Python, Streamlit, and SQLAlchemy.
Features
- Multi-language Support: Available in English, French, and German
- Chart of Accounts Management: Add, edit, and manage accounts categorized as Active (Assets), Passive (Liabilities/Equity), Expenses, and Products (Revenue)
- Journal Entries: Record double-entry bookkeeping transactions with validation
- Account Balances: View balances for all accounts with filtering and detailed transaction history
- Balance Sheet: Generate and view balance sheet with automatic balance validation
- Result Sheet (Income Statement): View revenue and expenses with net income calculation
- Excel Export: Export all accounting data to formatted Excel workbooks
- Database Management: Backup, restore, and manage database files
- Year-End Closing: Automated year-end closing with comprehensive backup packages
Technologies Used
- Frontend: Streamlit for web interface
- Database: SQLite with SQLAlchemy ORM
- Data Processing: Pandas for data manipulation and analysis
- Export: XlsxWriter for Excel report generation
- Visualization: Plotly for charts (if needed)
Installation
From PyPI (Recommended)
pip install accountr
From Source
- Clone or download this repository
- Install the package in development mode:
pip install -e .
Usage
After Installation from PyPI
accounting-app
From Source or Development
python main.py
Or alternatively:
streamlit run src/accounting/app.py
-
Open your web browser and navigate to the URL shown in the terminal (usually
http://localhost:8501) -
Select your preferred language from the dropdown (English, French, or German)
Application Structure
The application follows a modular architecture with clear separation of concerns:
Core Modules (src/accounting/)
app.py: Main Streamlit application entry point with navigationdatabase.py: SQLAlchemy models (Account, JournalEntry) and database configurationconstants.py: Centralized configuration values and magic numbershelpers.py: Common helper functions for validation and formattingaccounting_utils.py: Business logic for accounting calculations (balance, trial balance, etc.)translation_utils.py: Multi-language support utilities (English, French, German)translations.py: Translation strings for all supported languages
Page Modules (src/accounting/pages/)
chart_of_accounts_page.py: Chart of Accounts managementjournal_entries_page.py: Journal entry recording and editingaccount_balances_page.py: Account balance viewing with filteringresult_sheet_page.py: Income Statement (Result Sheet) generationbalance_sheet_page.py: Balance Sheet generation with validation
File Management
database_switcher.py: Database backup, restore, and file operationsdatabase_management_ui.py: UI components for file management and year-end closingexcel_utils.py: Excel formatting utilities and configurationexcel_export.py: Excel export logic for all accounting reports
Database
- Default database stored in
src/accounting/server_files/ requirements.txt: Legacy dependency file (now replaced bypyproject.toml)
Database
The application uses SQLite for data storage. The database file (accounting.db) will be created automatically in the same directory as the application.
Features Overview
Chart of Accounts Tab
- View all active accounts in a table format
- Add new accounts with account codes, names, types, and categories
- Deactivate accounts (soft delete)
Journal Entries Tab
- View recent journal entries
- Add new journal entries with double-entry validation
- Select debit and credit accounts from dropdown menus
Account Balances Tab
- View balances for all accounts
- Filter by category or account type
- Summary metrics showing totals by account type
Balance Sheet Tab
- Traditional balance sheet format
- Shows Assets on the left, Liabilities and Equity on the right
- Automatic balance validation (Assets = Liabilities + Equity)
Code Quality
This project follows professional coding standards:
- No Magic Numbers: All configuration values centralized in
constants.py - DRY Principle: Common functionality extracted into helper modules
- Separation of Concerns: Clear boundaries between UI, business logic, and data layers
- Modular Architecture: Focused modules with single responsibilities
- Type Hints: Function signatures include type information where appropriate
- Documentation: Functions include docstrings explaining purpose and parameters
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file accountr-0.1.1-py3-none-any.whl.
File metadata
- Download URL: accountr-0.1.1-py3-none-any.whl
- Upload date:
- Size: 51.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f54539e1c69448c6fb3a5c755ad1a3b0bad1dd7eafeb1b04cfbc830edf2f403
|
|
| MD5 |
9d2329240e89ffc1a3a63e70acb6a61c
|
|
| BLAKE2b-256 |
cd6ac75dfb98e3104d1fbf0cd77eba1071412d1f664fd6891609ac113b3e7ca4
|
Provenance
The following attestation bundles were made for accountr-0.1.1-py3-none-any.whl:
Publisher:
workflow.yml on njacquemin1993/accounting
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
accountr-0.1.1-py3-none-any.whl -
Subject digest:
8f54539e1c69448c6fb3a5c755ad1a3b0bad1dd7eafeb1b04cfbc830edf2f403 - Sigstore transparency entry: 788786534
- Sigstore integration time:
-
Permalink:
njacquemin1993/accounting@9d218773c682f05b74647699ad4d1cef6d120806 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/njacquemin1993
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@9d218773c682f05b74647699ad4d1cef6d120806 -
Trigger Event:
release
-
Statement type: