Skip to content

galvez/plainbudget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

124 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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)

About

Minimalist Plain Text Budgeting

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published