How hledgerorg/hledger works
hledger is plain-text, multi-currency double-entry accounting software with command-line, terminal and web interfaces. The main workflow is to read a journal or import transaction data, build and check accounting data, then query it for reports or export it. The graph also preserves documented CSV import/export and time-related capabilities. The tree and README establish the overall modules and product scope; sampled source is mainly web-side JavaScript, so detailed Haskell call wiring is not asserted.
Main entry points: Read.hs Input reader · Reports.hs Report engine · Journal.hs Journal data · app Command line
Components 22
User interfaces
- Command line
hledger/app - Terminal UI
hledger-ui/app/hledger-ui.hs - Web app
hledger-web/app/main.hs - Web handlers
hledger-web/Hledger/Web/Handler - Web presentation
hledger-web/templates
Input and parsing
- Input reader
hledger-lib/Hledger/Read.hs - Journal parser
hledger-lib/Hledger/Read/JournalReader.hs - CSV importer
hledger-lib/Hledger/Read/CsvReader.hs - Import rules
hledger-lib/Hledger/Read/RulesReader.hs - Time formats
hledger-lib/Hledger/Read/TimeclockReader.hs
Accounting engine
- Journal data
hledger-lib/Hledger/Data/Journal.hs - Ledger model
hledger-lib/Hledger/Data/Ledger.hs - Journal checks
hledger-lib/Hledger/Data/JournalChecks.hs - Amounts and balancing
hledger-lib/Hledger/Data/Balancing.hs - Lots and valuation
hledger-lib/Hledger/Data/Lots.hs - Query engine
hledger-lib/Hledger/Query.hs
Reports and output
- Report engine
hledger-lib/Hledger/Reports.hs - Balance reports
hledger-lib/Hledger/Reports/BalanceReport.hs - Budget reports
hledger-lib/Hledger/Reports/BudgetReport.hs - Register reports
hledger-lib/Hledger/Reports/AccountTransactionsReport.hs - Export writers
hledger-lib/Hledger/Write
Other components
- User
Connections 27
- User → Command line: runs commands
- User → Terminal UI: uses
- User → Web app: opens
- Command line → Input reader: loads data
- Terminal UI → Input reader: loads data
- Web app → Web handlers: dispatches
- Web handlers → Input reader: loads data
- Input reader → Journal parser: parses journals
- Input reader → CSV importer: imports CSV
- CSV importer → Import rules: uses rules
- Input reader → Time formats: reads time data
- Journal parser → Journal data: produces journal
- CSV importer → Journal data: produces journal
- Time formats → Journal data: produces journal
- Journal data → Journal checks: checked by
- Journal data → Ledger model: forms ledger
- Ledger model → Amounts and balancing: balances postings
- Ledger model → Lots and valuation: tracks lots
- Command line → Query engine: builds queries
- Web handlers → Query engine: builds queries
- Query engine → Report engine: filters data
- Report engine → Balance reports: supports
- Report engine → Budget reports: supports
- Report engine → Register reports: supports
- Command line → Export writers: exports data
- Web handlers → Web presentation: renders pages
- Web app → Report engine: serves reports