Skip to content

galvez/plainbudget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlainBudget

Minimalist plain text budgeting.

Read the blog post.

Get the app.

% npm i pbudget -g
% pbudget -s Budget.txt
% pbudget --stats Budget.txt
% cat Budget.txt | pbudget > Budget.txt

Supported Syntax

  • Groups start with = and are used to group values.

  • Flows start with + and are used to express cash flow.

  • Groups can be referenced in other groups or flows.

  • Multipliers can added to any referenced group or value.

  • Blocks of text with invalid syntax will be ignored and remain intact in the source.

  • Circular dependencies (group references) will cause both groups to be ignored.

  • Padding is automatically added to the value column.

Input

= Main
- 2000 Rent
- 1000 Utilities
- 500 Leisure

= Groceries
- 10 Coffee x 12
- 10 Milk x 12
- 20 Cereal x 6

= Income
- 5000 Salary
- 1000 Side hustle

+ Income
- Main
- Groceries

Output

  = 3500 Main
  - 2000 Rent
  - 1000 Utilities
  -  500 Leisure
  
  =  360 Groceries
  -   10 Coffee x 12
  -   10 Milk x 12
  -   20 Cereal x 6
  
  = 6000 Income
  - 5000 Salary
  - 1000 Side hustle
  
  + 6000 Income
  - 3500 Main
  -  360 Groceries
  = 2140 

Programmatic Usage

import { readFileSync } from 'node:fs'
import { PlainBudget } from 'pbudget'

const budget = readFileSync('Budget.txt', 'utf8')

const pbudget = new PlainBudget(budget)

pbudget.process()

console.log(pbudget.renderWithPadding())

pbudget.computeStats()

console.log(pbudget.stats)

Releases

No releases published

Packages

No packages published