Klirr is a config once, inter-month-idempotent, calendar aware, capable and maintenance-free invoice solution written in Rust + Typst

I’ve made a smart invoice template software you can cargo install or use as an SDK, I call it klirr: GitHub - Sajjon/klirr: Zero-maintenance and smart FOSS generating beautiful invoices for services and expenses.

Features:

  • Config once: Set your company, client and project information using interactive Terminal UI (creates RON files). No Rust, Typst or RON skills needed!
  • Inter-month-idempotent: You build the invoice any number of times, it always results in the same invoice number when run within the same month. The proceeding month the next invoice number will be used.
  • Calendar aware: Using your machines system time to determine the month, it calculates the number of working days for the target month. Invoice date is set to last day of the target month and due date is set dependent on the payment terms set in your RON files.
  • Capable: Supports setting number of days you were off, to be extracted from the automatically calculated number of working days. Supports expenses using “{PRODUCT}, {COST}, {CURRENCY}, {QUANTITY}, {DATE}” CSV string.
  • Maintenance free: The invoice number automatically set based on the current month. When you build the invoice the next month, the next number is used
  • Multi-layout support: Currently only one layout is implemented, but the code base is prepared to very easily support more.
  • Multi-language support: The labels/headers are dynamically loaded through l18n - supported languages are English and Swedish - it is trivial for anyone to make a PR to add support for more languages.

Any and all feedback is much appreciated! Especially on ergonomics and features, but codebase well.

I would especially love input on my usage of Typst - any drawbacks? See render crate. Any APIs which are going to go away soon? Eg Virtual files?

3 Likes