Tackler is fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting, written in Rust.
~/tackler-ng $ cat examples/simple/txns/journal.txn
2024-12-01 'Sweet'n Sour Candies
Expenses:Sweets:Candy 2.50
Assets:Cash
2024-12-22 'Hot dogs
Expenses:Food:FastFood 12
Assets:Visa:4012_8888_8888_1881
2024-12-22 'Strawberry ice cream
Expenses:Sweets:Ice·Cream 3
Assets:Cash
~/tackler-ng $ tackler --config examples/simple.toml
Balance Report
--------------
0.00 17.50 Expenses
0.00 12.00 Expenses:Food
12.00 12.00 Expenses:Food:FastFood
0.00 5.50 Expenses:Sweets
2.50 2.50 Expenses:Sweets:Candy
3.00 3.00 Expenses:Sweets:Ice·Cream
=====================
17.50
Tackler-NG is in feature parity with the old scala based Tackler CLI, and Tackler-NG will be the basis of all future Tackler development.
Note
|
Tackler-NG is tested with 306 of tackler’s test vectors at the moment |
All Tackler CLI functionality is supported, including Tackler Journal Format, transaction storages (Filesystem, Git SCM), all reports (Balance, Balance Group, Register) and all exports (Equity, Identity).
Other notable features are:
-
Handling Commodities and Shares
-
Transaction Filters for powerfull selectors of accounting data
-
Accounting based on Geo Location and Transaction GIS Filters
See tackler --help
, Documentation and Tackler Configuration how to use tackler-ng.
To build rusty Tackler, you will need git and Rust installed on your environment.
If you don’t have Rust, install it e.g. by running:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
If you don’t need source code and test cases, you can just run:
cargo install tackler
To play around and for building main
, get the source code and test cases:
git clone --recurse-submodules https://github.com/e257-fi/tackler-ng
And build the Tackler binary:
cd tackler-ng # The main branch should build and pass all tests. # To build a release, check relased versions: git tag -l # Get the release, e.g. v24.12.2 git checkout v24.12.2 # Build tackler cargo build --release --locked --bin tackler # the binary is located at 'target/release/tackler'
Audit example uses Git SCM as journal storage, and strict and audit modes are activated by configuration.
target/release/tackler --config examples/audit.toml
Audit test data has a branch with 100_000 transactions, this query will execute in few seconds:
target/release/tackler \ --config examples/audit.toml \ --input.git.ref txns-1E5 \ --accounts 'a:ay2016:am12'
Git Storage commit : cb56fdcdd2b56d41fc08cc5af4a3b410896f03b5 reference : txns-1E5 directory : txns suffix : .txn message : txns-1E5: 2016/12 Txn Set Checksum SHA-256 : 27060dc1ebde35bebd8f7af2fd9815bc9949558d3e3c85919813cd80748c99a7 Set size : 100000 ********************************************************************************** Account Selector Checksum SHA-256 : abbcd1800caab82df857441d734b728ca18850f08f9a1c96602ee740b970cae0 Balance Report -------------- -133433.00 -133433.00 a:ay2016:am12 ======================== -133433.00 ##################################################################################
See tackler --help
, Tackler configuration file, example commands and Tackler CLI documentation how to use the rusty version of tackler.
Developer’s Guides have technical information about Tackler-NG. For the general information about Tackler, see the Tackler site.
All contributions are valued and none is too small or insignificant.
See CONTRIBUTING for details how you could participate with Tackler-NG development.
If you find a security issue in Tackler-NG, please report it as outlined in the Security Policy.
Tackler-NG is licensed under the Apache License, version 2.0.