Skip to content

Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting

License

Notifications You must be signed in to change notification settings

tackler-ng/tackler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ci status Github Release crates.io: tackler Tackler Docs GitHub Discussions matrix: tackler

Tackler-NG

Tackler is fast (1), reliable bookkeeping engine with native GIT SCM support for plain text accounting, written in Rust.

cargo install --locked tackler # (2)
tackler new demo
tackler --config demo/conf/tackler.toml

This will produce balance and register reports for the demo journal.

Balance Report
--------------
                 0.00    17.50  Expenses
                 0.00    12.00  Expenses:Food
                12.00    12.00  Expenses:Food:Fast-Food
                 0.00     5.50  Expenses:Sweets
                 2.50     2.50  Expenses:Sweets:Candy
                 3.00     3.00  Expenses:Sweets:Ice·Cream
=====================
                17.50

Register Report
---------------
...

1) Tackler can process 120_000 - 250_000 transactions per second on modern laptop. See Performance for details.

2) If you don’t have Rust toolchain installed, get it from here.

Project Status

Tackler-NG is in feature parity with and beyond of the old Scala code base. It’s basis of all Tackler development.

Note

Tackler-NG is tested with 417 tracked test vectors

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:

See tackler --help, Documentation and Tackler Configuration how to use tackler-ng.

Installation

You can install tackler binary directly by cargo, even without cloning the repo:

# Latest released version
cargo install --locked tackler

# Latest development version
cargo install --locked --git https://github.com/tackler-ng/tackler tackler

Or build it from the local source code.

Build the Source Code

The main branch should build and pass all tests all the time.

You have to clone tackler source code with git submodules, as tests vectors are located in a separate repository.

git clone --recurse-submodules https://github.com/tackler-ng/tackler

Then build the tackler binary - if you have just installed, building tackler is just:

just release-build

Tackler binary will be located at target/release/tackler.

Or with plain cargo command:

cd tackler-ng

# The main branch should build and pass all tests
cargo build --release --locked --bin tackler

Again, the binary will be located at target/release/tackler

Examples

See examples folder in the repository for full list of examples.

Simple example with Filesystem Journal

target/release/tackler --config examples/simple.toml

Complex example with Git Storage and Audit mode

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, tackler examples and Tackler CLI documentation how to use the rusty version of tackler.

Developer’s Guides have technical information about Tackler-NG. For Tackler user manual, see the Tackler Documentation.

Credits

Special thanks to the Rust community for the all help and advice, without forgetting Clippy. Gitoxide is one of the key components which made Tackler-NG possible - Thank you!

See CREDITS for full details.

Contributing

All contributions are valued and none is too small or insignificant.

See CONTRIBUTING for details how you could participate with Tackler-NG development.

Following people have helped or contributed to the development of Tackler-NG:

Thank you!

Security

If you find a security issue in Tackler-NG, please report it as outlined in the Security Policy.

License

Tackler-NG is licensed under the Apache License, version 2.0.