Injoice is a Mac OS X invoicing application for freelancers and micro businesses. It is sold and distributed through Apple’s Mac App Store. I started developing the application around the end of July 2011. It was initially released to the Mac App Store in December 2011.

When I started to develop Injoice, I focused on implementing only what I thought to be the very essentials for creating an invoice. A person who used this first version of Injoice could create an invoice using a pre-designed template, add their logo, record business and customer details, and record what items were sold. The application would then perform the necessary monetary calculations.

Injoice main window screenshot
A screenshot of Injoice's main window, displaying the invoice listing

Ever since the initial release, I have gradually implemented additional features into Injoice in response to customer feedback. The features that I choose to implement tend to be those that enhance or refine existing functionality. This allows the application to continue being easy to use for existing and new customers. It also allows me to keep the application focused on just doing a few things well.

Injoice is developed using a combination of native and web technologies. The core of the application (which includes things like the windowing system, data persistence, and user preferences) is implemented in Cocoa and Objective-C. The invoice editor is hosted inside of a WebView component and it is implemented with JavaScript and React. Communication between the application core and editor happens over a JavaScript and Objective-C bridge exposed by the WebView component.