b7e53878d39260d2e26a29109f621b8b5492f234
tags are how the marketplace is browsed rather than scrolled: a list of them on the left, the plugins that carry one on the right. a closed vocabulary (PLUGIN_TAGS in the platform) because free text becomes homelab, home-lab, Home Lab and selfhosted inside a month, and a filter list of synonyms is worse than no filter at all. declared here rather than curated in the catalogue, so a plugin can say what it is and nobody edits a table when one ships. the marketplace caches it on sync, exactly as it already does for label and summary.
Invoices
Your InvoiceShelf books, inside Officer — invoices, estimates, customers and payments, with the credentials held server-side.
What you get
- Invoices — list, filter by status, open one and see its lines
- Estimates — the same, before they become invoices
- Customers and their history
- Payments recorded against invoices
- Multiple companies — add several sets of books and switch between them
Requirements
A running InvoiceShelf instance Officer can reach, and credentials for it.
Setup
Install the plugin, open /invoices, and add an account: a label, the URL, and the credentials. They are encrypted at rest and never sent to the browser. Mark one active.
The plugin does not install or supervise InvoiceShelf. Point it at one you already run.
Permissions
One permission, invoices, grantable per role like any other app permission.
Notes
- The plugin is named
invoices, notinvoiceshelf— named for what it shows rather than the daemon behind it, which is what keeps the URL/invoices. SeePLUGIN.md.
Languages
TypeScript
100%