Git Product home page Git Product logo

ledger's Introduction

Ledger in Go

This is a project to parse and import transactions in a ledger file similar to the Ledger command line tool written in C++.

Simple Ledger file support

The ledger file this will parse is much simpler than the C++ tool.

Transaction Format:

<YYYY/MM/dd> <Payee description>
    <Account Name 1>    <Amount 1>
    .
    .
    .
    <Account Name N>    <Amount N>

The transaction must balance (the positive amounts must equal negative amounts). One of the account lines is allowed to have no amount. The amount necessary to balance the transaction will be added to that account for the transaction. Amounts must be decimal numbers with a negative(-) sign in front if necessary.

Example transaction:

2013/01/02 McDonald's #24233 HOUSTON TX
    Expenses:Dining Out:Fast Food        5.60
    Wallet:Cash

A ledger file is a list of transactions separated by a blank line.

A ledger file may include other ledger files using include <filepath>. The filepath is relative to the including file.

ledger

This will parse a ledger file into an array of Transaction structs. There is also a function get balances for all accounts in the ledger file.

GoDoc

cmd/ledger

A very simplistic version of Ledger. Supports "balance", "register", "print" and "stats" commands.

Example usage:

    ledger -f ledger.dat bal
    ledger -f ledger.dat bal Cash
    ledger -f ledger.dat reg
    ledger -f ledger.dat reg Food
    ledger -f ledger.dat print
    ledger -f ledger.dat stats

cmd/limport

Using an existing ledger as input to a bayesian classifier, it will attempt to classify an imported csv of transactions based on payee names and print them in a ledger file format.

Attempts to get payee, date, and amount based on headers in the csv file.

Example usage:

    limport -f ledger.dat discover discover-recent-transactions.csv

In the above example "discover" is the account search string to use to find the account that all transactions in the csv file should be applied too. The second account to use for each transaction will be picked based on the bayesian classification of the payee.

cmd/lweb

A website view of the ledger file. This program will show the account list, and ledger for a given account.

Reports available through the web interface are taken from a toml configuration file of the report configuration. See reports-sample.toml for examples.

Example usage:

    lweb -f ledger.dat -r reports.toml --port 8080

Screenshots

The screenshots below are taken on an Android device. To give a rough idea of what the web interface looks like.

main navigation navigation of reports bar chart stacked bar chart pie chart line chart

Installing components

    go get -u github.com/howeyc/ledger/...

Incompatibilities

  • C++ Ledger permits having amounts prefixed with $; Ledger in Go does not

  • C++ Ledger permits an empty Payee Description; Ledger in Go does not

ledger's People

Contributors

howeyc avatar aquilax avatar athorp96 avatar bionoren avatar kalafut avatar raylai avatar silasb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.