# harisr92/accounting-blue architecture

> Architecture diagram of the GitHub repository harisr92/accounting-blue, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/harisr92/accounting-blue
- Repository: https://github.com/harisr92/accounting-blue

## Overview

Accounting Core is a Rust library for double-entry bookkeeping, Indian GST calculations, financial reports, and reconciliation of ledger activity against external statements. Its main workflow is an application creating accounts and recording validated transactions through the ledger, then querying balances and reports. Reconciliation is a separate caller-orchestrated workflow: the application obtains ledger transactions and parsed statement records, passes both to the synchronous matching engine, and may persist the resulting report. The README documents additional report types; sampled implementation detail is strongest for ledger orchestration, GST calculations, and reconciliation boundaries.

Main entry points: [`src/reconciliation/engine.rs`](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/engine.rs) (Matching Engine), [`src/ledger/core.rs`](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/core.rs) (Ledger API), [`src/traits.rs`](https://github.com/harisr92/accounting-blue/blob/main/src/traits.rs) (Ledger Storage Trait), [`src/ledger/transaction.rs`](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/transaction.rs) (Transaction Processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ledger["Ledger"]
  node_ledger_api["Ledger API<br/>[core.rs]"]
  node_account_mgr["Account Management<br/>[account.rs]"]
  node_txn_mgr["Transaction Processing<br/>[transaction.rs]"]
  node_validation["Validation Rules<br/>[validation.rs]"]
  node_ledger_storage["Ledger Storage Trait<br/>[traits.rs]"]
  node_memory_store[("Memory Storage<br/>[memory_storage.rs]")]
  node_domain_types["Accounting Types<br/>[types.rs]"]
end

subgraph group_reporting["Financial Reporting"]
  node_reports["Financial Reports<br/>[core.rs]"]
end

subgraph group_gst["GST"]
  node_gst_calculator["GST Calculator<br/>[gst.rs]"]
  node_gst_invoice["GST Invoices<br/>[gst.rs]"]
end

subgraph group_recon["Reconciliation"]
  node_recon_app(("Reconciliation Caller"))
  node_ledger_txns["Ledger Transactions<br/>[types.rs]"]
  node_statement_data["Statement Data"]
  node_parser_trait["Statement Parser<br/>[storage.rs]"]
  node_recon_engine["Matching Engine<br/>[engine.rs]"]
  node_recon_rules["Matching Config<br/>[config.rs]"]
  node_similarity["Similarity Scoring<br/>[similarity.rs]"]
  node_recon_report["Reconciliation Report<br/>[types.rs]"]
  node_recon_storage["Reconciliation Storage<br/>[storage.rs]"]
end

node_app(("Accounting Application"))

node_app -->|"calls"| node_ledger_api
node_ledger_api -->|"delegates account work"| node_account_mgr
node_ledger_api -->|"delegates transactions"| node_txn_mgr
node_account_mgr -->|"reads and writes"| node_ledger_storage
node_txn_mgr -->|"reads and writes"| node_ledger_storage
node_txn_mgr -->|"validates"| node_validation
node_ledger_storage -.->|"implemented by"| node_memory_store
node_app -->|"requests calculations"| node_gst_calculator
node_gst_calculator -->|"calculates line items"| node_gst_invoice
node_app -->|"requests reports"| node_reports
node_reports -->|"queries ledger data"| node_ledger_api
node_recon_app -->|"loads ledger records"| node_ledger_storage
node_recon_app -->|"requests parsing"| node_parser_trait
node_statement_data -->|"parsed from"| node_parser_trait
node_recon_app -->|"passes both sides"| node_recon_engine
node_recon_app -->|"projects ledger legs"| node_ledger_txns
node_parser_trait -->|"returns transactions"| node_recon_app
node_recon_engine -->|"uses thresholds"| node_recon_rules
node_recon_engine -->|"scores candidates"| node_similarity
node_recon_engine -->|"produces report"| node_recon_report
node_recon_app -->|"loads and saves reports"| node_recon_storage
node_recon_app -->|"persists result"| node_recon_storage

click node_ledger_api "https://github.com/harisr92/accounting-blue/blob/main/src/ledger/core.rs"
click node_account_mgr "https://github.com/harisr92/accounting-blue/blob/main/src/ledger/account.rs"
click node_txn_mgr "https://github.com/harisr92/accounting-blue/blob/main/src/ledger/transaction.rs"
click node_validation "https://github.com/harisr92/accounting-blue/blob/main/src/utils/validation.rs"
click node_ledger_storage "https://github.com/harisr92/accounting-blue/blob/main/src/traits.rs"
click node_memory_store "https://github.com/harisr92/accounting-blue/blob/main/src/utils/memory_storage.rs"
click node_domain_types "https://github.com/harisr92/accounting-blue/blob/main/src/types.rs"
click node_reports "https://github.com/harisr92/accounting-blue/blob/main/src/ledger/core.rs"
click node_gst_calculator "https://github.com/harisr92/accounting-blue/blob/main/src/tax/gst.rs"
click node_gst_invoice "https://github.com/harisr92/accounting-blue/blob/main/src/tax/gst.rs"
click node_ledger_txns "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/types.rs"
click node_parser_trait "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/storage.rs"
click node_recon_engine "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/engine.rs"
click node_recon_rules "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/config.rs"
click node_similarity "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/similarity.rs"
click node_recon_report "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/types.rs"
click node_recon_storage "https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/storage.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ledger_api,node_account_mgr,node_txn_mgr,node_validation,node_ledger_storage,node_memory_store,node_domain_types toneBlue
class node_reports toneAmber
class node_gst_calculator,node_gst_invoice toneMint
class node_recon_app,node_ledger_txns,node_statement_data,node_parser_trait,node_recon_engine,node_recon_rules,node_similarity,node_recon_report,node_recon_storage toneRose
class node_app toneIndigo
```

## Components

### Ledger

- [Ledger API](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/core.rs): `src/ledger/core.rs`
- [Account Management](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/account.rs): `src/ledger/account.rs`
- [Transaction Processing](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/transaction.rs): `src/ledger/transaction.rs`
- [Validation Rules](https://github.com/harisr92/accounting-blue/blob/main/src/utils/validation.rs): `src/utils/validation.rs`
- [Ledger Storage Trait](https://github.com/harisr92/accounting-blue/blob/main/src/traits.rs): `src/traits.rs`
- [Memory Storage](https://github.com/harisr92/accounting-blue/blob/main/src/utils/memory_storage.rs): `src/utils/memory_storage.rs`
- [Accounting Types](https://github.com/harisr92/accounting-blue/blob/main/src/types.rs): `src/types.rs`

### Financial Reporting

- [Financial Reports](https://github.com/harisr92/accounting-blue/blob/main/src/ledger/core.rs): `src/ledger/core.rs`

### GST

- [GST Calculator](https://github.com/harisr92/accounting-blue/blob/main/src/tax/gst.rs): `src/tax/gst.rs`
- [GST Invoices](https://github.com/harisr92/accounting-blue/blob/main/src/tax/gst.rs): `src/tax/gst.rs`

### Reconciliation

- **Reconciliation Caller**
- [Ledger Transactions](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/types.rs): `src/reconciliation/types.rs`
- **Statement Data**
- [Statement Parser](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/storage.rs): `src/reconciliation/storage.rs`
- [Matching Engine](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/engine.rs): `src/reconciliation/engine.rs`
- [Matching Config](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/config.rs): `src/reconciliation/config.rs`
- [Similarity Scoring](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/similarity.rs): `src/reconciliation/similarity.rs`
- [Reconciliation Report](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/types.rs): `src/reconciliation/types.rs`
- [Reconciliation Storage](https://github.com/harisr92/accounting-blue/blob/main/src/reconciliation/storage.rs): `src/reconciliation/storage.rs`

### Other components

- **Accounting Application**

## Connections

- Accounting Application → Ledger API: calls
- Ledger API → Account Management: delegates account work
- Ledger API → Transaction Processing: delegates transactions
- Account Management → Ledger Storage Trait: reads and writes
- Transaction Processing → Ledger Storage Trait: reads and writes
- Transaction Processing → Validation Rules: validates
- Ledger Storage Trait → Memory Storage: implemented by
- Accounting Application → GST Calculator: requests calculations
- GST Calculator → GST Invoices: calculates line items
- Accounting Application → Financial Reports: requests reports
- Financial Reports → Ledger API: queries ledger data
- Reconciliation Caller → Ledger Storage Trait: loads ledger records
- Reconciliation Caller → Statement Parser: requests parsing
- Statement Data → Statement Parser: parsed from
- Reconciliation Caller → Matching Engine: passes both sides
- Reconciliation Caller → Ledger Transactions: projects ledger legs
- Statement Parser → Reconciliation Caller: returns transactions
- Matching Engine → Matching Config: uses thresholds
- Matching Engine → Similarity Scoring: scores candidates
- Matching Engine → Reconciliation Report: produces report
- Reconciliation Caller → Reconciliation Storage: loads and saves reports
- Reconciliation Caller → Reconciliation Storage: persists result
