There are plenty of software options for invoices out there and for full accounting you will find it hard to beat Xero. I have simple invoicing requirements but need to generate them as PDFs in a certain way. I also need the ability to modify and adjust things which is often not practical with software as a service subscription systems like Xero. My previous invoice software was developed with an earlier version of CodeIgniter framework which is now obsolete. My choices are to rewrite and patch the old system to work on the latest CodeIgniter framework or develop on an alternative platform.

Goldfish Invoices - Laravel Web Application


Given the latest CodeIgniter is a radical change from my legacy code, it seemed like a great opportunity to do something new. The new project will demonstrate that I can work with the ever popular Laravel framework, designing and producing a useful end product within a quick timeframe. Using Laravel and some other tooling to short-cut development, I scaffolded the role based login and authentication along with some crude listing and editing features for some of the basic data models. Invoices are a little more complex so I applied LiveWire modal components to add, edit and remove related line items, payments and history. Following that I perform calculations for tax, totals, due dates and amount owing and use the DOM PDF dependency to output the branded invoice as a PDF file.

I adopted LiveWire which is a technology to bring ajax components into Laravel similar to React or Vue but using PHP in place of Javascript. I would consider it a good evolution from JQuery which is the previous way I might build ajax interfaces before React, Vue or Flutter came onto the scene.

I made good use of the database migration and seeder features in Laravel to pre-fill the database with sample data. The application also has automated feature tests to check url availability, role based access permission security and various financial scenarios for the calculations.


Goldfish Invoices has now been beta released as an open source project on my GitHub account. I also use it for my own invoicing and will continue to expand and improve over time with reporting and further modal dialog forms and alerts to improve the user experience.


PHP, Bootstrap 5 CSS, Laravel, LiveWire, PDF Generator

View on GitHub