Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/e257-fi/tackler-ng

Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting
https://github.com/e257-fi/tackler-ng

accounting auditing git ledger plaintext plaintext-accounting rust

Last synced: 5 days ago
JSON representation

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

Awesome Lists containing this project

README

        

image:https://github.com/e257-fi/tackler-ng/actions/workflows/ci.yml/badge.svg["ci status", link="https://github.com/e257-fi/tackler-ng/actions"]
image:https://img.shields.io/github/v/release/e257-fi/tackler-ng?include_prereleases&color=%230868da["Github Release", link="https://github.com/e257-fi/tackler-ng/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/e257-fi/tackler-ng["GitHub Discussions", link="https://github.com/e257-fi/tackler-ng/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 tackler
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 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 basis of all Tackler development, and it's
in link:https://tackler.e257.fi/features/[feature] parity and beyond
of the old scala code base.

[NOTE]
====
*Tackler-NG is tested with 310 tracked test vectors at the moment*
====

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:

* Handling link:https://tackler.e257.fi/docs/commodities/[Commodities] and link:https://tackler.e257.fi/docs/currencies/[Shares]
* link:https://tackler.e257.fi/docs/txn-filters/[Transaction Filters] for powerfull selectors of accounting data
* 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.

== How to build Tackler CLI application

Get the source code and test cases to play around and for building `main`:

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

Then 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. v25.01.1
git checkout v25.01.1

# Build tackler
cargo build --release --locked --bin tackler

# the binary is located at 'target/release/tackler'
----

=== 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`, link:examples/tackler.toml[Tackler configuration] file, example link:docs/examples.adoc[commands] 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 the general information about Tackler, see the link:https://tackler.e257.fi/docs/[Tackler site].

== 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]

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