I’ve started a new section called the CodePlex on the web site. Its up there on the menu at the top of the page, next to the Bazaar. One of the things I wanted to do here was start to share some useful software tidbits when I had them and when the situation under which they were developed allowed for it. So its starts today with the offering of wrapper classes for the FreshBooks.com api. FreshBooks is a great site for outsourcing your invoice preparation, delivery and followup. It is especially useful, I’ve found, if you have a lot of subscription billing or recurring invoices.
FreshBooks provides an api (application programming interface) for manipulating the functions of the service from another program. You could, for example, write an application for your PocketPC-based cell phone that would allow you to enter an order from a customer while at his location and have FreshBooks deliver the invoice instantly via email. Or you could review your client’s payment history, log time against a project, add travel expense, etc. If you were proprietor of Accounting software, you could offer a link to FreshBooks as a replacement or alternative for printing invoices and envelopes.
My wrapper classes allow a C# programmer to easily access the functionality of the FreshBooks.com web site. The first few classes were started by Donald Halloran and I later picked them up and extended them to cover the entire api. I also created a test routine that exercised a significant portion of the methodology. The project is being released under the GNU Lesser General Public License, which means it is free software that can be used for any purpose, free or commercial. Derivitive works, such as a repackaging of the library or expanded the library to include additional functions, must also be distributed under the Lesser GPL.
And let me give a shout-out to the team at FreshBooks.com. They have scarily reposonsive customer service and the developers are fully engaged and communicating. I admire them a great deal and would like to reshape my own development team along similar lines.