Double entry accounting in the browser
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
generator
spec
src
.gitignore
.travis.yml
LICENSE
README.md
package.json

README.md

Build status License: GPL v3

monescript

monescript is a double-entry plain text accounting system that works in you browser. monescript is a server-less application, all the calculations are performed locally in your browser window without any data leaving your computer.

monescript works with text files formatted as a transaction journal. No modification is made to the original journal, monescript only performs journal analysis and presents financial summary graphs and statistics.

Motivation

For years I've been using Excel to handler my personal accounting. After stumbiling upon Ledger docs and introduction to double-entry accounting from Beancount I decided to try out plain text accounting.

Around that time I also wanted to learn JavaScript, so naturally monescript works in the browser and in nodejs (for the tests). As a side benefit there is nothing to install to get monescript working, all you need is a browser and a text editor. You can just add your transactions to the text file and open it in monescript to get all the details in couple of clicks.

Demo

By default demo shows randomly generated data on the Transactions tab.

You can explore the generated journal format on the Source tab.

If you have a file with monescript journal syntax you can feed it to monescript from the Open tab.

monescript journal syntax

monescript syntax is inspired by Ledger journal syntax. Here is the list of features that are currently supported by monescript parser:

  • Transaction format
    • YYYY/MM/DD date format
    • $ currency
    • simple arithmetic value expressions (+, -, *, /)
    • notes prefixed with ';'
  • line comments prefixed with ';' or '#'
  • bucket command
  • tag names
  • include and year commands (ignored)

There is no restriction on the name of the accounts.

Journal is expected to be balanced, which means that for every transaction has to have source and destination account(s). if journal is not balanced. monescript will not be able to analyze the journal and show an error.

Sample monescript journal file

bucket Assets:Bank:Checking 

2017/1/9 * The Doughnut
  Expenses:Food:Takeout                  $10.10
  Assets:Bank:Checking 

2017/1/7 * Pharmacy One
  Expenses:Pharmacy                      $22.34
# don't have to specify the source account, when defined with bucket command above  

2017/2/1 * PartyShack
  ; monescript can compute simple expressions, like this tax calculation 
  Expenses:Entertainment                 ($5.89 * 1.05) 
  Expenses:Clothing                      $16.72
  Assets:Bank:Checking 

; You can insert arbitrary comments between transactions
2017/1/13 * Groceries and More
  Expenses:Food:Grocery                  $29.32 ; Or for each posting
  Assets:Bank:Checking 

2017/2/3 * Laser Play
  Expenses:Entertainment                 $45.96

2017/2/4 * Eastern Gas
  Expenses:Bills:Gas                     $47.64
  Assets:Bank:Checking                   $-47.64 

Contributions and bugs

If you find a bug please submit a ticket in the Issues. Contributions are welcome via pull request to the master branch.

Copyright

Copyright (C) 2018 ABTechBit <abtechbit@aol.com>