Quickstart

With Tackler-NG version v25.1.1 or higher, run:

cargo install tackler
tackler new journal
tackler --config journal/conf/tackler.toml

Longer version of the same story

You need Rust toolchain to build tackler binary.

Build and install Tackler
cargo install tackler

This will build and install tackler so that’s available on your PATH environment variable. Assuming that you’ve followed default Rust toolchain installation. See Installation Manual for full instructions. You can uninstall it by running cargo uninstall tackler.

Creating a journal

Once you have installed tackler, create default journal setup with:

tackler new my_journal

This will create a new bookkeeping setup, with default configuration my_journal/conf and example transactions in my_journal/txns (feel free to modify or delete these transaction files).

The next step is to run default reports for the journal:

tackler --config my_journal/conf/tackler.toml

This will run Balance and Register reports by default. You can select which reports to run by using --reports option, see tackler --reports for more information.

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
---------------
...

Strict Mode

Tackler has a strict mode, which validates account names, commodity names and tags. This is useful for ensuring that all transaction data is correctly entered and that the reports are accurate. To enable strict mode, set kernel.strict = true in the tackler.toml configuration file. You can enable strict mode with the default journal.

Journal examples and source code

Tackler repository contains several example journals, which you can use to play and test tackler further: to test git integration, running tackler in audit mode, or playing with demo setup of 100_000 transactions.

Get source and test journals
git clone --recurse-submodules https://github.com/e257-fi/tackler-ng
cd tackler-ng

Simple example

The simple.toml example uses filesystem based storage backend, no account name validations, no auditing features.

Command

tackler --config examples/simple.toml

Output

Balance Report
--------------
                 0.00   12.00  Expenses:Food
                12.00   12.00  Expenses:Food:Groceries
                 0.00    3.32  Expenses:Sweets
                 2.12    2.12  Expenses:Sweets:Ice·cream
                 1.20    1.20  Expenses:Sweets:Salmiakki
=====================
                15.32

Let’s play for real - Git storage and Audit mode

The audit.toml example uses a bare git repository as transaction storage, and also strict and audit mode is activated by configuration. This means that all accounts, commodity names and tags are validated. The triplet of git commit id, Txn Set Checksum and Account Selector Checksum provides an auditable (cryptographic) proof of transactions used by reports.

Command

tackler --config examples/audit.toml

Output

Git Storage
         commit : 4aa4e9797501c1aefc92f32dff30ab462dae5545
      reference : txns-1E1
      directory : txns
         suffix : .txn
        message : txns-1E1: 2016/12

Txn Set Checksum
        SHA-256 : 9b29071e1bf228cfbd31ca2b8e7263212e4b86e51cfee1e8002c9b795ab03f76
       Set size : 10

**********************************************************************************
Account Selector Checksum
        SHA-256 : 19d31a48bf9a8604a1128ccfd281511f961c5469748a97897a21fc0fa2a5f519

Balance Report
--------------
                 0.00   -161.00  a:ay2016
                -6.00     -6.00  a:ay2016:am02
               -14.00    -14.00  a:ay2016:am03
               -19.00    -19.00  a:ay2016:am04
               -26.00    -26.00  a:ay2016:am05
                -1.00     -1.00  a:ay2016:am07
                -7.00     -7.00  a:ay2016:am08
               -13.00    -13.00  a:ay2016:am09
               -19.00    -19.00  a:ay2016:am10
               -25.00    -25.00  a:ay2016:am11
               -31.00    -31.00  a:ay2016:am12
=====================
              -161.00
##################################################################################

Playing with 100_000 transactions

The audit repository contains a branch which has set of 100_000 transactions, and it’s named as txns-1E5. The following command will run the audit mode for the transactions in the branch txns-1E5 and select only accounts starting with a:ay2016:am1, that’s accounts for year 2016, months 10, 11 and 12.

Command

tackler \
    --config examples/audit.toml \
    --input.git.ref txns-1E5 \
    --accounts "a:ay2016:am1.*"

Output

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 : 49bfb37038bd82c1f23eeb3ea018a721b1f9503732493b7a6d7c96f187bc1505


Balance Report
--------------
              -135619.00   -135619.00  a:ay2016:am10
              -127126.00   -127126.00  a:ay2016:am11
              -133433.00   -133433.00  a:ay2016:am12
========================
              -396178.00
##################################################################################