DEV Community

Cover image for What I Shipped in July: Receipts, Thermal Printing, Dark Mode & a Big Refactor for Invoiso
anoop p
anoop p

Posted on

What I Shipped in July: Receipts, Thermal Printing, Dark Mode & a Big Refactor for Invoiso

July was one of the biggest months for Invoiso, my free and open-source invoicing application built with Flutter for Windows, macOS, and Linux.

The focus this month was improving everyday workflows, supporting more businesses, and cleaning up the codebase for future development.

Here's everything that shipped.


๐Ÿงพ Receipts

One of the most requested features finally landed.

Invoiso now supports Receipts as a dedicated document type alongside invoices and quotations.

Receipts have:

  • Their own numbering sequence
  • Dedicated PDF layout
  • Print and export support

๐Ÿ–จ๏ธ Native USB Thermal Printer Support

Businesses using thermal printers can now print directly from Invoiso.

This update includes:

  • USB thermal printer support
  • Compact receipt layout
  • Detailed receipt layout
  • Thermal preview inside the PDF viewer before printing

๐ŸŒ— Dark Mode (Beta)

Every major screen now supports dark mode.

There are still a few areas being polished, but the application is now fully usable in dark mode and early feedback has been very positive.


๐Ÿท๏ธ Product Improvements

Products received several useful additions.

Product aliases

Each product can now have a local-language alias that appears on generated PDFs.

This makes it much easier for businesses that invoice customers in regional languages.

Custom units

Products are no longer limited to plain quantities.

You can now use units such as:

  • kg
  • pcs
  • box
  • dozen
  • litre
  • meter
  • and more

Purchase cost tracking

Products now support storing purchase/cost price separately from selling price, making it easier to calculate margins.


๐Ÿ“‹ New PDF Template

Added a new invoice template:

Grid Classic

It's inspired by traditional printed invoices with bordered tables and works across:

  • A4
  • A5
  • A6

๐Ÿ“Š Daily Reports

A brand new Daily Reports screen provides a quick overview of daily business activity, making end-of-day reconciliation much easier.


๐ŸŒ Better Regional Language Support

Invoices can now render correctly using additional fonts for:

  • Malayalam
  • Tamil
  • Telugu
  • Kannada
  • Hindi
  • Marathi

This was especially important for users creating invoices in local languages.


โš™๏ธ Under the Hood

This month also included a large amount of internal work.

Riverpod migration

The entire application was migrated to Riverpod, simplifying state management and making future development much easier.

Better PDF architecture

Instead of maintaining one massive PDF generation file, every template now has its own implementation.

The codebase is significantly cleaner and easier to extend.

Database testing

Added regression tests to reduce the chance of database-related bugs.


๐Ÿž Fixes

Lots of smaller improvements shipped too.

Highlights include:

  • Fixed Windows multi-monitor maximize issues
  • Fixed macOS network permission problems
  • Improved pagination
  • Fixed template rendering issues
  • Fixed multiple UI overflow problems
  • Improved printing stability
  • General performance improvements throughout the application

Looking Ahead

Dark Mode will continue to be polished, and I'm already working on more improvements for future releases.

Possible upcoming features include:

  • Cloud sync
  • Mobile companion app
  • More invoice templates
  • Additional business reports

Invoiso is completely free, MIT licensed, and available for Windows, macOS, and Linux.

If you have feature ideas or feedback, I'd love to hear them.

Top comments (2)

Collapse
 
saqrelfirgany profile image
Ahmed ElFirgany

The regional font work is the part I would want the war story on. Malayalam and Tamil need real glyph shaping for conjuncts, and the Dart pdf package draws text runs rather than shaping them, so embedding the font gets you the letters but not always the joined forms. Did you hit that, and if you did, did you fix it in the font or by rendering the text somewhere else first?

Splitting one giant PDF file into a file per template is the change that pays you back the most next month. Templates are where the special cases quietly pile up.

Collapse
 
anoop_p_22f715057ac8b3901 profile image
anoop p

Hi @saqrelfirgany

Thanks! Yes, I did run into that challenge. Simply embedding a font wasn't enough in every case, especially for some regional scripts where proper glyph shaping is required. I spent quite a bit of time testing different fonts and validating the output with native speakers to get reliable results. It's much better now, although complex script rendering is still something I continue to keep an eye on.

And you're absolutely right about splitting the templates. I recently refactored the PDF generation so each template has its own file instead of one large implementation. It's already made the codebase much easier to maintain and add new features without affecting other templates.