{"id":26643624,"url":"https://github.com/tackler-ng/tackler","last_synced_at":"2025-04-08T03:19:41.935Z","repository":{"id":152050845,"uuid":"624739862","full_name":"tackler-ng/tackler","owner":"tackler-ng","description":"Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting","archived":false,"fork":false,"pushed_at":"2025-04-06T10:37:54.000Z","size":1166,"stargazers_count":77,"open_issues_count":9,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-06T11:24:10.553Z","etag":null,"topics":["accounting","auditing","git","ledger","plaintext","plaintext-accounting","rust"],"latest_commit_sha":null,"homepage":"https://tackler.e257.fi/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tackler-ng.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.adoc","contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-07T06:30:04.000Z","updated_at":"2025-04-06T10:37:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"31421873-8a6d-42c6-8c10-6332fa8381aa","html_url":"https://github.com/tackler-ng/tackler","commit_stats":{"total_commits":90,"total_committers":1,"mean_commits":90.0,"dds":0.0,"last_synced_commit":"2f9121ea05623633e1d7d8f504ef3f977ffb62f2"},"previous_names":["tackler-ng/tackler","e257-fi/tackler-ng"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tackler-ng%2Ftackler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tackler-ng%2Ftackler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tackler-ng%2Ftackler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tackler-ng%2Ftackler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tackler-ng","download_url":"https://codeload.github.com/tackler-ng/tackler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767239,"owners_count":20992548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accounting","auditing","git","ledger","plaintext","plaintext-accounting","rust"],"created_at":"2025-03-24T20:02:19.663Z","updated_at":"2025-04-08T03:19:41.920Z","avatar_url":"https://github.com/tackler-ng.png","language":"Rust","funding_links":[],"categories":["Applications"],"sub_categories":["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\"]\nimage:https://img.shields.io/github/v/release/tackler-ng/tackler?include_prereleases\u0026color=%230868da[\"Github Release\", link=\"https://github.com/tackler-ng/tackler/releases\"]\nimage:https://tackler.e257.fi/img/badge-crates.svg[\"crates.io: tackler\", link=\"https://crates.io/crates/tackler\"]\nimage:https://img.shields.io/badge/tackler-documentation-%23ffcb00[\"Tackler Docs\", link=\"https://tackler.e257.fi/docs\"]\nimage:https://img.shields.io/github/discussions/tackler-ng/tackler[\"GitHub Discussions\", link=\"https://github.com/tackler-ng/tackler/discussions\"]\nimage:https://tackler.e257.fi/img/badge-matrix.svg[\"matrix: tackler\", link=\"https://matrix.to/#/#tackler:matrix.org\"]\n\n= Tackler-NG\n\nlink:https://tackler.e257.fi/[Tackler] is fast (1), reliable bookkeeping engine\nwith native GIT SCM support for plain text accounting, written in Rust.\n\n----\ncargo install --locked tackler # (2)\ntackler new demo\ntackler --config demo/conf/tackler.toml\n----\nThis will produce balance and register reports for the demo journal.\n\n----\nBalance Report\n--------------\n                 0.00    17.50  Expenses\n                 0.00    12.00  Expenses:Food\n                12.00    12.00  Expenses:Food:Fast-Food\n                 0.00     5.50  Expenses:Sweets\n                 2.50     2.50  Expenses:Sweets:Candy\n                 3.00     3.00  Expenses:Sweets:Ice·Cream\n=====================\n                17.50\n\nRegister Report\n---------------\n...\n----\n\n1) Tackler can process 120_000 - 250_000 transactions per second on modern laptop.\nSee link:https://tackler.e257.fi/docs/performance/[Performance] for details.\n\n2) If you don't have Rust toolchain installed,\nget it link:https://www.rust-lang.org/tools/install[from here].\n\n\n== Project Status\n\nTackler-NG is in link:https://tackler.e257.fi/features/[feature] parity with\nand beyond of the old Scala code base. It's basis of all Tackler development.\n\n[NOTE]\n====\n*Tackler-NG is tested with 414\nlink:https://github.com/tackler-ng/tackler-t3db[tracked test vectors]*\n====\n\nAll Tackler CLI functionality is supported, including\nlink:https://tackler.e257.fi/docs/journal/format/[Tackler Journal Format],\ntransaction storages (link:https://tackler.e257.fi/docs/usage/#storage-selector[Filesystem],\nlink:https://tackler.e257.fi/docs/journal/git-storage/[Git SCM]),\nall reports\n(link:https://tackler.e257.fi/docs/report-balance/[Balance],\nlink:https://tackler.e257.fi/docs/report-balance-group/[Balance Group],\nlink:https://tackler.e257.fi/docs/report-register/[Register])\nand all exports\n(link:https://tackler.e257.fi/docs/export-equity/[Equity],\nlink:https://tackler.e257.fi/docs/export-equity/[Identity]).\n\nOther notable features are:\n\n* Support for link:https://tackler.e257.fi/docs/commodities/[Commodities], link:https://tackler.e257.fi/docs/currencies/[Currencies and Shares]\n\n* link:https://tackler.e257.fi/docs/price/[Market Value of Commodities and Shares], including different valuation (Mark-to-Market) methods:\n    ** link:https://tackler.e257.fi/docs/price/current-market-value/[Current Market Value]\n    ** link:https://tackler.e257.fi/docs/price/historic-market-value/[Historic Market Value]\n    ** link:https://tackler.e257.fi/docs/price/variable-market-value/[Variable Market Value]\n\n* link:https://tackler.e257.fi/docs/txn-filters/[Transaction Filters] for powerful selectors of used accounting data\n* Real transaction link:https://tackler.e257.fi/docs/journal/format/#timestamps[timestamps up to nanosecond] resolution and with timezone information\n* 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]\n\nSee `tackler --help`, link:https://tackler.e257.fi/docs/[Documentation] and  link:examples/tackler.toml[Tackler Configuration] how to use tackler-ng.\n\n== Installation\n\nYou can install tackler binary by cargo:\n\n----\ncargo install --locked tackler\n----\n\nOr build it from the source.\n\n== Build the Source Code\n\nThe `main` branch should link:https://github.com/tackler-ng/tackler/actions/workflows/ci.yml[build and pass] all tests:\n\n----\ngit clone --recurse-submodules https://github.com/tackler-ng/tackler\n----\n\nThen build the tackler binary:\n\n----\ncd tackler-ng\n\n# The main branch should build and pass all tests\ncargo build --release --locked --bin tackler\n\n# the binary is located at 'target/release/tackler'\n----\n\n== Examples\n\nSee link:https://github.com/tackler-ng/tackler/tree/main/examples[examples folder\nin the repository] for full list of examples.\n\n\n=== Simple example with Filesystem Journal\n\n----\ntarget/release/tackler --config examples/simple.toml\n----\n\n=== Complex example with Git Storage and Audit mode\n\nAudit example uses Git SCM as journal storage, and strict and audit modes are activated by configuration.\n\n----\ntarget/release/tackler --config examples/audit.toml\n----\n\nAudit test data has a branch with 100_000 transactions, this query will execute in few seconds:\n\n----\ntarget/release/tackler \\\n   --config examples/audit.toml \\\n   --input.git.ref txns-1E5 \\\n   --accounts 'a:ay2016:am12'\n----\n\n----\nGit Storage\n         commit : cb56fdcdd2b56d41fc08cc5af4a3b410896f03b5\n      reference : txns-1E5\n      directory : txns\n         suffix : .txn\n        message : txns-1E5: 2016/12\n\nTxn Set Checksum\n        SHA-256 : 27060dc1ebde35bebd8f7af2fd9815bc9949558d3e3c85919813cd80748c99a7\n       Set size : 100000\n\n**********************************************************************************\nAccount Selector Checksum\n        SHA-256 : abbcd1800caab82df857441d734b728ca18850f08f9a1c96602ee740b970cae0\n\n\nBalance Report\n--------------\n              -133433.00   -133433.00  a:ay2016:am12\n========================\n              -133433.00\n##################################################################################\n----\n\n\nSee `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.\n\nlink: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].\n\n== Credits\n\nSpecial thanks to the Rust community for the all help and advice,\nwithout forgetting Clippy.\nlink:https://github.com/GitoxideLabs/gitoxide[Gitoxide]\nis one of the key components which made Tackler-NG possible - Thank you!\n\nSee link:CREDITS.adoc[CREDITS] for full details.\n\n== Contributing\n\nAll contributions are valued and none is too small or insignificant.\n\nSee link:CONTRIBUTING.adoc[CONTRIBUTING] for details how you could participate\nwith Tackler-NG development.\n\nFollowing people have helped or contributed to the development of Tackler-NG:\n\nlink:https://github.com/byron[Byron],\nlink:https://github.com/zamazan4ik[zamazan4ik],\nlink:https://github.com/epage/[epage],\nlink:https://github.com/BurntSushi[BurntSushi] and\nlink:https://github.com/RagibHasin[RagibHasin]\n\nThank you!\n\n== Security\n\nIf you find a security issue in Tackler-NG, please report it as outlined in\nthe link:./SECURITY.md[Security Policy].\n\n\n== License\n\nTackler-NG is licensed under the link:./LICENSE[Apache License, version 2.0].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftackler-ng%2Ftackler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftackler-ng%2Ftackler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftackler-ng%2Ftackler/lists"}