Quickstart

To use tackler, you will need tackler binary and an accounting journal.

Install tackler binary
cargo install --locked tackler
Create an example journal and run default reports
tackler new journal
tackler --config journal/conf/tackler.toml

That’s it, you are all done!

You are now ready to start your accounting journey. Feel free to add, modify or delete transaction files under the journal/txns directory. After all, it’s your journal. Tackler will pick up automatically all files ending with .txn as journal from that directory.

See Tackler Journal and Command Line Reference how to get started with tackler.

Longer version of the same story

You need Rust toolchain to build tackler binary.

Build and install Tackler
cargo install --locked 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:

Create journal template
tackler new journal

This will create a new bookkeeping setup, with default configuration located at journal/conf.

See tackler.toml, accounts.toml, commodities.toml and tags.toml for full configuration options.

The example transactions are located under journal/txns directory, and this is your journal. Feel free to add, modify or delete these transaction files. Tackler will automatically pick up all from here files ending with '.txn' as journal data.

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

Run example reports
tackler \
   --config 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.

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

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

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 one hundred thousand transactions.

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

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

Below is an example of balance report in tree mode, when sibling account’s cumulative sums are reported too.

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
      reference : set-1e1
      directory : txns
      extension : txn
         commit : ed6e4b10de2daea8d143569c473d14a9b09c3270
         author : tackler <accounting@example.com>
           date : 2016-11-25 09:36:00 +0000
        subject : set-1e1: 2016-11-25

Txn Set Checksum
        SHA-256 : 4a0eb2f8836447a025030a87136c047b4a737031162f593cb00f390c6ba113a3
       set size : 10

**********************************************************************************
Account Selector Checksum
        SHA-256 : df4714ff3f5bd031a8256df95863a8085f740b436f1b47febb45c9eb9aaa9e9e
       selector : 'a:.*'


Balance Report
--------------
                -1.00   a:ay2016:am01
                -6.00   a:ay2016:am02
               -14.00   a:ay2016:am03
               -19.00   a:ay2016:am04
               -26.00   a:ay2016:am05
                -2.00   a:ay2016:am07
                -7.00   a:ay2016:am08
               -13.00   a:ay2016:am09
               -19.00   a:ay2016:am10
               -25.00   a:ay2016:am11
=====================
              -132.00
##################################################################################

Journal with one hundred thousand transactions

The audit repository contains a branch which has set of 100_000 transactions, and it’s named as set-1e5.

The following command will run reports in the audit mode with the journal data in branch set-1e5. Only accounts starting as a:ay2016:am1 are selected into reports.

Command

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

Output

Git Storage
      reference : set-1e5
      directory : txns
      extension : txn
         commit : 4648a2994b41ed341b544a148b3060fd2d267d79
         author : tackler <accounting@example.com>
           date : 2016-12-31 17:41:24 +0000
        subject : set-1e5: 2016-12-31

Txn Set Checksum
        SHA-256 : 2f4bc22df78502182aa27037d8d0f72462adb018be3e768399e0b803fa75baa7
       set size : 100000

**********************************************************************************
Account Selector Checksum
        SHA-256 : 49bfb37038bd82c1f23eeb3ea018a721b1f9503732493b7a6d7c96f187bc1505
       selector : 'a:ay2016:am1.*'


Balance Report
--------------
              -135619.00   a:ay2016:am10
              -127126.00   a:ay2016:am11
              -133402.00   a:ay2016:am12
========================
              -396147.00
##################################################################################