~kdsch/invoicer

b4f7581d732b8f2d6dc0db53150db6fd0ccacea6 — Karl Schultheisz 4 years ago 8a101d1
add README.md
1 files changed, 51 insertions(+), 0 deletions(-)

A README.md
A README.md => README.md +51 -0
@@ 0,0 1,51 @@
# Invoicer

Invoicer manages and generates invoices.

I intend it only for my own use, but if you share my preference for command-line tools, you might find it useful too.

I wrote invoicer to help me run my [consulting business][biz].

[biz]: https://schultheisz.com


## Database-driven

Invoicer keeps everything—including sellers, customers, and invoices—in a [SQLite][] database. This eases filing taxes and planning for the future. It's a serious upgrade over a folder full of PDFs or spreadsheets.

[SQLite]: https://sqlite.org/index.html

Invoicer handles multiple customers (as you might expect) and also multiple sellers. This allows you to change your business details (which might happen as you grow) or track multiple businesses without getting confused.


## Hacker UI

Invoicer uses your shell and text editor as a user interface. When you want to create a new invoice or party, just run `invoicer invoice` or `invoicer party`. (But if you're holding an "invoicer party," whatever that is, count me out.) Invoicer will pipe a partially-completed form into your text editor for you to fill out. When you're done, write the form to standard out; Invoicer will add it to the database!


## Effective typography

Invoicer renders the most compelling invoice documents you've ever seen, thanks to me having read [Practical Typography][] from cover to cover a few times. I can only hope, however, that your customers will pay upon sight.

[Practical Typography]: https://practicaltypography.com

To generate a document, you'll need the invoice's ID (which, for your convenience, `invoicer invoice` prints out after it succeeds). Then run `invoicer report $ID`. You can convert this to a PDF using tools like [wkhtmltopdf][] or a web browser (Chromium works well). Just make sure to set the page margins to zero and disable fit-to-page automatic scaling.

[wkhtmltopdf]: https://wkhtmltopdf.org/


## Missing features

- Smooth UX. We're working on it.
- Pagination. It works best with fewer than seven items per invoice.
- Updating or removing entries in the database. You can use SQLite directly.
- Rendering to pages of a size other than 8.5″ × 11″.


## Dependencies

- [Fira Sans and Fira Mono](https://github.com/bBoxType/FiraSans)
- [Go](https://golang.org)
- [vis](https://github.com/martanne/vis/)