Tackler Ain’t Calculator and Kernel for Ledger Equivalent Records.
Why not? Because it uses simplified Ledger syntax.
In other words, Tackler is accounting engine and reporting tool for text based double-entry accounting.
See Tackler’s web site for user information and documentation.
Tackler’s idea is provide simple, reliable and trustworthy engine to process text-based human readable accounting records.
Simple means that Tackler’s journal format is semantically concise and easy for humans to reason about and that Tackler provides minimum set of features which are needed for its operation.
Reliable means that Tackler’s behaviour is well known, tested and it is documented.
Trustworthy means that Tackler must provide correct and trustworthy results always. Tackler’s result should be possible to verify, ideally in cryptographically secure way.
All that said, Tackler can be used easily with command line interface for normal personal accounting data sets.
Minimal feature set, very simple and well defined input format
Tackler input journal is supposed to be produced by software and to be audited by human.
However, it must be possible to edit the journal by hand.
Well known and defined behaviour
Extensive user and developer documentation
Error free, reliable and resilient
Near perfect code and permutation test coverage
Must be able to process hundreds of thousands of records with reasonable processing time and memory footprint
Must have linear processing time characteristics
Assumption: All transactions can be held in memory
Provides backend and core components for text based accounting processing
JVM and Multi platform support: Linux and Arm-Linux, it should be possible to run it on Windows
GIT is used for data distribution and storage
Documentation and Quick Start Guides
Todo, TEPs and Roadmap
Extremely loosely defined roadmap is following:
Reporting Server as separate project
Extending support for Units
Profit and Loss (PnL) tracking
Automatic conversions between different base units
Support for unit handling with commodities
Extending support for Currencies and Commodities
For release information and version history details, see CHANGELOG.
Tackler-core is intended to be used as for component to implement server systems. Tackler-api is released for JVM and JS environments, and it is intended to be used on the client enviroments.
Dependency settings for SBT are:
libraryDependencies += "fi.e257" %% "tackler-core" % "version-number" libraryDependencies += "fi.e257" %%% "tackler-api" % "version-number"
These are released on Maven Central Repository.
Tackler is under development, however complex backward non-compatible changes to Journal file format should be rare. At the moment Tackler is used in production for operational data set.
Contributing to Tackler
Contributions to the project are most welcome. See CONTRIBUTING how you could help.
Your pull requests and patches can be merged only if you can certify the Developer Certificate of Origin (DCO), Version 1.1.
By signing-off your commit you certify DCO and acknowlegde that you have the rights to submit your pull requsted or patch as an open-source patch, as stated in Developer Certificate of Origin.
Certifying DCO is done by adding a
to every git commit message:
Signed-off-by: gitlab-account <firstname.lastname@example.org>
If you set your
user.email correctly in git config,
then git will automatically include that line for you with
git commit -s.
You can also create a git
commit.template with appropriate content. These
settings can be done per repository basis, so they don’t have to be globally
set in your system.
Please make sure that you sign-off all your commits on your merge/pull request.
See THANKS for full list of credits.
Copyright 2016-2021 E257.FI Contributors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.