Invoice system

A custom invoice system made for my small company

Together with my wife, I am running a small company to rent out a furnished tent, called BuitenBij Borculo. When we had our first customer, we created an invoice manually. I quickly got annoyed by the hard time that Microsoft Word gave me, trying to perfectly place the invoice lines and get everything neatly aligned. I did not want to go through that each time we had a new renter.

LaTeX

Back in university, I wrote my thesis (and any other document for courses) using LaTeX1. It had a steep learning curve, but was a great way to generate perfectly aligned PDF’s, even with dynamic data. I knew this was a good fit for invoice pdf generation.

Invoice management

Ofcourse, having a way to generate PDF’s wasn’t enough (for me). I wanted to get more familiar with a technology stack like Go and HTMX. After having done a tutorial, I decided to create a simple invoice management system. This is system is capable of creating customers and includes functionality to create (partial) invoices, and (partial) credit notes, as well as some administrative tasks to mark an invoice as paid, or a deposit as refunded.

The system is built manually, without AI. Only the last couple of iterations, I’ve started to use AI to aid in the restructuring of the architecture.

Tech stack

The backend is written in Go and it uses the standard net/http router. It serves HTML files using templ as the templating framework, with HTMX for the partial updates and flexibility. It uses sqlite for a simple database.

Footnotes

  1. LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. ↩