Billing
daily driverYour invoicing system - it reads your git commits and turns them into a client-ready invoice.
Billing is a tool I built to handle the paperwork side of freelance work. It reads your git commit history, drafts a reviewable work log from them (suggesting hours you can adjust) and assembles a professional invoice PDF that's ready to send to a client.
- Python
- Django
- ReportLab
- PostgreSQL
- Bootstrap 5
Most billing tools make you enter time manually. This one reads the actual work (the git commits) and builds the invoice from that. You review and adjust the entries in a web interface, then export a clean PDF. Because it's a reusable library, any Django web project can drop it in and get the same workflow.
What it does
Billing is a reusable Django library that you plug into your web projects to handle all the invoicing bookkeeping. It connects to git repositories, pulls in the commit history for a given month, and organizes those commits into work entries, each with hours, a category, and a description. You can review everything in a clean web interface, adjust anything that needs tweaking, and then generate a professional PDF invoice and work report to send to your client. The app tracks clients, contracts, rates, and recurring costs, so once it's set up, each month's billing is mostly just review and approve. It also has a handy status command that gives a quick read-out of what's ready to bill and what still needs attention.
Why it's neat
Work logs get a head start
It pulls in the code history so you're editing a draft with suggested hours, not starting from a blank page.
Review before you send
A staff web interface lets you check every entry, adjust hours or descriptions, and see the invoice total before anything goes out.
Professional PDFs in one command
One command exports a polished invoice and a detailed work report as PDFs, ready to attach to an email.
How it works
1. Import from git
The app reads commits from configured repos for the billing month and turns each group of related commits into a draft work entry with suggested hours you can adjust.
2. Review and refine
You open the web interface to review entries, adjust hours or descriptions, and assign work to the right project or feature.
3. Create the invoice
One command assembles a draft invoice with all the work entries and any recurring contract costs included.
4. Export and send
Another command exports the invoice and a full work report as PDFs, ready to send to the client.