https://github.com/tackler-ng/tackler
Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting
https://github.com/tackler-ng/tackler
accounting auditing git ledger plaintext plaintext-accounting rust
Last synced: 8 days ago
JSON representation
Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting
- Host: GitHub
- URL: https://github.com/tackler-ng/tackler
- Owner: tackler-ng
- License: apache-2.0
- Created: 2023-04-07T06:30:04.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-06T10:37:54.000Z (9 days ago)
- Last Synced: 2025-04-06T11:24:10.553Z (9 days ago)
- Topics: accounting, auditing, git, ledger, plaintext, plaintext-accounting, rust
- Language: Rust
- Homepage: https://tackler.e257.fi/
- Size: 1.11 MB
- Stars: 77
- Watchers: 0
- Forks: 4
- Open Issues: 9
-
Metadata Files:
- Readme: README.adoc
- Changelog: CHANGELOG.adoc
- Contributing: CONTRIBUTING.adoc
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-rust - tackler - Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting [](https://github.com/tackler-ng/tackler/blob/main/.github/workflows/ci.yml) (Applications / Finance)
- fucking-awesome-rust - tackler - Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting [](https://github.com/tackler-ng/tackler/blob/main/.github/workflows/ci.yml) (Applications / Finance)
README
image:https://github.com/tackler-ng/tackler/actions/workflows/ci.yml/badge.svg["ci status", link="https://github.com/tackler-ng/tackler/actions"]
image:https://img.shields.io/github/v/release/tackler-ng/tackler?include_prereleases&color=%230868da["Github Release", link="https://github.com/tackler-ng/tackler/releases"]
image:https://tackler.e257.fi/img/badge-crates.svg["crates.io: tackler", link="https://crates.io/crates/tackler"]
image:https://img.shields.io/badge/tackler-documentation-%23ffcb00["Tackler Docs", link="https://tackler.e257.fi/docs"]
image:https://img.shields.io/github/discussions/tackler-ng/tackler["GitHub Discussions", link="https://github.com/tackler-ng/tackler/discussions"]
image:https://tackler.e257.fi/img/badge-matrix.svg["matrix: tackler", link="https://matrix.to/#/#tackler:matrix.org"]= Tackler-NG
link:https://tackler.e257.fi/[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.50Register Report
---------------
...
----1) Tackler can process 120_000 - 250_000 transactions per second on modern laptop.
See link:https://tackler.e257.fi/docs/performance/[Performance] for details.2) If you don't have Rust toolchain installed,
get it link:https://www.rust-lang.org/tools/install[from here].== Project Status
Tackler-NG is in link:https://tackler.e257.fi/features/[feature] parity with
and beyond of the old Scala code base. It's basis of all Tackler development.[NOTE]
====
*Tackler-NG is tested with 414
link:https://github.com/tackler-ng/tackler-t3db[tracked test vectors]*
====All Tackler CLI functionality is supported, including
link:https://tackler.e257.fi/docs/journal/format/[Tackler Journal Format],
transaction storages (link:https://tackler.e257.fi/docs/usage/#storage-selector[Filesystem],
link:https://tackler.e257.fi/docs/journal/git-storage/[Git SCM]),
all reports
(link:https://tackler.e257.fi/docs/report-balance/[Balance],
link:https://tackler.e257.fi/docs/report-balance-group/[Balance Group],
link:https://tackler.e257.fi/docs/report-register/[Register])
and all exports
(link:https://tackler.e257.fi/docs/export-equity/[Equity],
link:https://tackler.e257.fi/docs/export-equity/[Identity]).Other notable features are:
* Support for link:https://tackler.e257.fi/docs/commodities/[Commodities], link:https://tackler.e257.fi/docs/currencies/[Currencies and Shares]
* link:https://tackler.e257.fi/docs/price/[Market Value of Commodities and Shares], including different valuation (Mark-to-Market) methods:
** link:https://tackler.e257.fi/docs/price/current-market-value/[Current Market Value]
** link:https://tackler.e257.fi/docs/price/historic-market-value/[Historic Market Value]
** link:https://tackler.e257.fi/docs/price/variable-market-value/[Variable Market Value]* link:https://tackler.e257.fi/docs/txn-filters/[Transaction Filters] for powerful selectors of used accounting data
* Real transaction link:https://tackler.e257.fi/docs/journal/format/#timestamps[timestamps up to nanosecond] resolution and with timezone information
* Accounting based on link:https://tackler.e257.fi/docs/gis/txn-geo-location[Geo Location] and link:https://tackler.e257.fi/docs/gis/txn-geo-filters/[Transaction GIS Filters]See `tackler --help`, link:https://tackler.e257.fi/docs/[Documentation] and link:examples/tackler.toml[Tackler Configuration] how to use tackler-ng.
== Installation
You can install tackler binary by cargo:
----
cargo install --locked tackler
----Or build it from the source.
== Build the Source Code
The `main` branch should link:https://github.com/tackler-ng/tackler/actions/workflows/ci.yml[build and pass] all tests:
----
git clone --recurse-submodules https://github.com/tackler-ng/tackler
----Then build the tackler binary:
----
cd tackler-ng# The main branch should build and pass all tests
cargo build --release --locked --bin tackler# the binary is located at 'target/release/tackler'
----== Examples
See link:https://github.com/tackler-ng/tackler/tree/main/examples[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/12Txn Set Checksum
SHA-256 : 27060dc1ebde35bebd8f7af2fd9815bc9949558d3e3c85919813cd80748c99a7
Set size : 100000**********************************************************************************
Account Selector Checksum
SHA-256 : abbcd1800caab82df857441d734b728ca18850f08f9a1c96602ee740b970cae0Balance Report
--------------
-133433.00 -133433.00 a:ay2016:am12
========================
-133433.00
##################################################################################
----See `tackler --help`, link:examples/tackler.toml[Tackler configuration] file, tackler link:https://github.com/tackler-ng/tackler/tree/main/examples[examples] and link:tackler-cli/CRATES.md[Tackler CLI documentation] how to use the rusty version of tackler.
link:docs/devel/readme.adoc[Developer's Guides] have technical information about Tackler-NG. For Tackler user manual, see the link:https://tackler.e257.fi/docs/[Tackler Documentation].
== Credits
Special thanks to the Rust community for the all help and advice,
without forgetting Clippy.
link:https://github.com/GitoxideLabs/gitoxide[Gitoxide]
is one of the key components which made Tackler-NG possible - Thank you!See link:CREDITS.adoc[CREDITS] for full details.
== Contributing
All contributions are valued and none is too small or insignificant.
See link:CONTRIBUTING.adoc[CONTRIBUTING] for details how you could participate
with Tackler-NG development.Following people have helped or contributed to the development of Tackler-NG:
link:https://github.com/byron[Byron],
link:https://github.com/zamazan4ik[zamazan4ik],
link:https://github.com/epage/[epage],
link:https://github.com/BurntSushi[BurntSushi] and
link:https://github.com/RagibHasin[RagibHasin]Thank you!
== Security
If you find a security issue in Tackler-NG, please report it as outlined in
the link:./SECURITY.md[Security Policy].== License
Tackler-NG is licensed under the link:./LICENSE[Apache License, version 2.0].