Billmonger a dead simple PDF one-page invoice generator written in Go.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
James Mills 235b665eb2
Add startOfNextMonth function
3 years ago
assets Add example asset image so you can run demo 4 years ago
invoice Add startOfNextMonth function 3 years ago
.gitignore Ignore billing.yaml 4 years ago
Dockerfile Copy pasta error 4 years ago
LICENSE Add README and examples 4 years ago
README.md Fix typo in the README 3 years ago
billing.example.yaml More clarification 4 years ago
go.mod Switch to using Go111Modules 3 years ago
go.sum Switch to using Go111Modules 3 years ago
main.go Support running for day other than today 4 years ago

README.md

Billmonger

Billmonger is a dead simple PDF one-page invoice generator written in Go. The intention is to make the generated invoices look professional and have them be repeatable. You can use your own company logo and two company colors as part of the invoice, and each invoice is configurable with a single YAML file.

Billmonger makes many assumptions to keep things simple. Some of them are:

  • You will have two company colors or use two generic colors
  • You will not invoice for more than about a dozen items
  • The billing period is a month (semi-configurable)
  • The bill due date is a month boundary
  • Everything on the bill is the same currency
  • Filenames will be output in a standard way

Current limitations:

  • It almost has support for tax calculation but it's not there yet

The Problem This Solves

You have a small business and need to regularly generate bills, perhaps as a contractor. Your bills are fairly similar but may have different line items. This will generate a nice A4 PDF that looks professional and is easily customizable to your business.

What It Looks Like

The sample billing.example.yaml file provided will generate a PDF file that looks like this:

PDF Example

Configuration

Configuration is done in the YAML file (billing.yaml by default). This describes the bill and the billables to be reported. It supports a couple of templating features that make reporting items easier. These are Go template functions and are to be put inside double curly braces anywhere in the YAML file. Interpretation of the template happens before YAML processing. Examples:

  • {{ endOfNextMonth }}: This will be substituted with the end day of the month following the current month.
  • {{ endOfThisMonth }}: This will be substituted with the end day of the current month.
  • {{ billingPeriod }}: This will be substituted with the current month's beginning and end dates.

CLI Flags

billmonger currently takes a single CLI flag, to tell it which config file to use to run the bill. The default is billing.yaml, but you may specify otherwise like so:

$ ./billmonger -c my-other-config.yaml

You may ask for help on the command line in the semi-standard way:

$ ./billmonger --help

usage: billmonger [<flags>]

Flags:
      --help  Show context-sensitive help (also try --help-long and --help-man).
  -c, --config-file="billing.yaml"
              The YAML config file to use
  -b, --billing-date="2019-03-06"
              The date to assume the bill is written on