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

Tackler plain text accounting | Mirror, please use https://gitlab.com/e257/accounting/tackler for issues and PRs
https://github.com/e257-fi/tackler

accounting cli git java javascript jgit jvm ledger plaintext plaintext-accounting scala scalajs

Last synced: 27 days ago
JSON representation

Tackler plain text accounting | Mirror, please use https://gitlab.com/e257/accounting/tackler for issues and PRs

Awesome Lists containing this project

README

        

image:https://gitlab.com/e257/accounting/tackler/badges/main/pipeline.svg?ignore_skipped=true["Build status", link="https://gitlab.com/e257/accounting/tackler/-/jobs/"]
image:https://gitlab.com/e257/accounting/tackler/badges/main/coverage.svg["Coverage", link="https://gitlab.com/e257/accounting/tackler/-/jobs/"]
image:https://maven-badges.herokuapp.com/maven-central/fi.e257/tackler-core_2.13/badge.svg["Maven Central", link="https://maven-badges.herokuapp.com/maven-central/fi.e257/tackler-core_2.13"] +
image:https://tackler.e257.fi/img/scaladoc-core.svg["ScalaDoc: tackler-core", link="https://tackler.e257.fi/scaladoc/fi.e257/tackler-core_2.13/latest/fi/e257/tackler/index.html"]
image:https://tackler.e257.fi/img/scaladoc-api.svg[ "ScalaDoc: tackler-api", link="https://tackler.e257.fi/scaladoc/fi.e257/tackler-api_2.13/latest/fi/e257/tackler/api/index.html"]
image:https://www.scala-js.org/assets/badges/scalajs-1.3.0.svg["Scala.js",link="https://www.scala-js.org"]

= Tackler

Tackler Ain't Calculator and Kernel for link:http://ledger-cli.org/[Ledger] Equivalent Records. +
Why not? Because it uses simplified Ledger syntax.

In other words, Tackler is accounting engine and reporting tool for
link:http://plaintextaccounting.org/[text based double-entry accounting].

== Tackler's website

See link:https://tackler.e257.fi[Tackler's web site] for user information and documentation.

== Why Tackler?

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.

=== Tackler Goals

* 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

* Good performance
** 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

Implementation language of Tackler is link:http://scala-lang.org/[Scala]
and journal parsing is done with link:http://www.antlr.org/[ANTLR4].

== Documentation and Quick Start Guides

See link:https://tackler.e257.fi[Tackler's web site] for all user information and documentation.

Developer related information is listed link:./docs/readme.adoc[here].

== Todo, TEPs and Roadmap

Tackler's outstanding todo items are kept in link:./todo[todo] files.
Major new ideas, enhancement ideas and plans are tracked and planned in
link:./docs/tep/readme.adoc[Tackler Enhancement Proposals (TEP)].

=== 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
** Price database

== Releases

For release information and version history details,
see link:./CHANGELOG.adoc[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.

See link:https://tackler.e257.fi/docs/server-api/[Server API]
and link:https://tackler.e257.fi/docs/client-api/[Client API]
for additional information.

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
link:https://tackler.e257.fi/docs/journal/format/[Journal file format]
should be rare. At the moment Tackler is used in production for
operational data set.

Configuration files, command line interface
and link:https://tackler.e257.fi/docs/client-api/[Client API]
(data models and link:https://tackler.e257.fi/docs/json/[JSON serialization])
are more likely to subject of change.

== Security

If you find a security issue in Tackler, please report it as outlined in
link:./SECURITY.md[Security Policy].

== Contributing to Tackler

Contributions to the project are most welcome. See
link:./CONTRIBUTING.adoc[CONTRIBUTING] how you could help.

Your pull requests and patches can be merged only if you can certify
the link:./DCO[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 link:./DCO[Developer Certificate of Origin].

Certifying DCO is done by adding a `Signed-off-by` line
to **every** git commit message:

Signed-off-by: gitlab-account

If you set your `user.name` and `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.

== Credits

See xref:./site/_docs/credits.adoc[THANKS] for full list of credits.

== License

....
Copyright 2016-2023 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.
....