The document never leaves the tab.
Most free invoice generators are a form that posts your client list to a server, renders a PDF there, and keeps a copy. OpenDocuHub inverts that: every operation is local.
- 01
State, not a form post
The editor holds one typed document object. Every field writes to it, every derived number is recomputed from it, and the same object feeds the canvas and the PDF renderer. There is no second source of truth to drift.
- 02
Arithmetic in integer cents
Amounts are stored as integer minor units. Line nets, tax at each rate, compound taxes, retainage and withholding are computed with round-half-up, and any total that must be split across lines uses largest-remainder apportionment so the parts always sum to the whole.
- 03
PDF composed in memory
pdf-lib embeds the fonts and draws every rule, table and totals block in the tab. The download is a blob URL created locally. A4, US Letter, dual-slip packing layouts and 80/58mm thermal rolls are separate paginators over the same document state.
- 04
Storage you can delete
Saved documents, clients, catalogue items, sequences and settings live in IndexedDB under this origin. The vault exports to a single JSON file and imports back. Wiping site data is a complete deletion - which is why the export button exists.
- 05
Offline after first paint
The service worker caches the app shell and the engine chunks. Navigation is network-first so a new deployment is never masked; assets are cache-first so the editor survives a dead connection.