//plainbudgetbygalvez

plainbudget

Minimalist Plain Text Budgeting

260
9
260
2
JavaScript

PlainBudget

Minimalist plain text budgeting.

undefinedRead the blog post.undefined

undefinedGet the app.undefined

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

Supported Syntax

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

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

  • undefinedGroups can be referenced in other groups or flows.

  • undefinedMultipliers 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.

undefinedInputundefined

= 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

undefinedOutputundefined

  = 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)
[beta]v0.14.0