Skip to main content

· 2 min read
Oliver Walters

0.1.0 Stable Release

The InvenTree development team is proud to announce the 0.10.0 stable release!

New Features

As always, thanks to the efforts of our development team and larger community, this release is packed full of new features! Some of these new features are highlighted below - refer to the release notes for more information!

SSO Improvements

A lot of work has gone into improving Single Sign On (SSO) integration. We have made some changes to make the SSO process smoother, and improved the user experience. Additionally (and importantly) the documentation has been significantly improved!

Currency Conversion

In a major improvement for currency support, conversion between different currencies is now performed "client side". This means that data tables which contain money values with different currencies can now be added together - and in a computationally efficient manner. Currency exchange rate data is now made available via the API - paving the way for future feature development in this area.

Pricing Features

A number of smaller improvements have been made to the pricing architecture.

Build Order Priority

Build orders can now be arranged by priority - a simple numerical value which allows certain build orders to be marked as more "important" than others.

Translation

As always, thanks must be given to our translation team who help provide InvenTree in multiple languages. This release cycle, we have added support for Slovenian (although this does need some attention, at only 6% translated). Translation is an ongoing process, and requires the support of the InvenTree community!

#Bug Fixes

In addition to the new features listed above, this release also provides fixes for a number of outstanding bugs. Many of these have been reported by our users - thanks for your feedback and help to make InvenTree better for everyone!

Release Notes

As always, the full set of release notes and changelogs is available on our GitHub Page.

Mobile App

Corresponding with the main software release, the mobile app has a new release also.

Python Bindings

The InvenTree python bindings have also been updated - check out the release notes.

· 6 min read
Matthias Mair

Plugin List

Recently a new feature was launched: A central plugin list.

The Plugin List is managed by the InvenTree org and is open for submissions. It is a simple list on the website for a start. Being on the list is not an endorsement or guarantee of service by the core team.

Why plugins and a plugin list?

InvenTree is a powerful tool but the use cases very widely. Many things can be done with it, but too many special features also create confusion for the average hobbyist user. That is why we created the plugin system. It allows users to extend InvenTree with custom functionality without having to modify or ding into core code. It is a great way to add features that are not needed by everyone but are still useful for a subset of users. It can also be used to customize InvenTree to fit existing patterns (eg. part numbering scheme or order references).

One of my main goals was to enable complex changes without the need of forking the code. This way users can still benefit from upstream changes and bugfixes without having to merge them manually. As a positive side effect, it should also reduce requests for fixes of very old versions and enable users to always use the latest version of InvenTree as we try to keep the plugin (python) APIs stable.

The plugin system has been in core for a while now and from my own usage, conversations with users and requests on GitHub I know that small plugin collections have started to form.
I think most plugins are very tailored to the businesses/users that deploy them. I have seen some for shipping, integrating ERP systems, connecting machines or generating files for orders. Therefore, they are not fit for public consumption.
There are, however, a number of public repos on GitHub and GitLab with integrations for printers, adding functionality that we are not willing/able to add to core or do other cool things.

The plugin list is a way to share the cool, public plugins you made with the community. I also hope that it enables new users to onboard faster.

How it works

As mentioned before, we use Jekyll for this website. This means that the list consists of static pages that are generated from YAML/Markdown files. The output is hosted by GitHub pages (for free ;-)) and can be previewed on PRs thanks to the Netlify app integration.

A file contains a number of standardized fields in the header and markup text for the plugin page that uses Markdown (just like GitHub README pages). That information is used to generate:

  • the individual plugin pages
  • plugin cards on the main page (showing the newest entries)
  • a list of all available plugins
  • overview pages for tags and categories

Adding a new entry is as simple as forking, creating a new file in the plugins folder and opening a PR. More on that is below.

There are also entries and pages for authors/publishers. Currently, we only support one author per plugin, but that might change in the future. The author entry is used to generate a page for the author. That page also contains all blog posts written by the author and a few links.

Disclaimer

While the list is moderated, the core team does not endorse or guarantee any service for the plugins listed. If you have any questions, please contact the plugin author directly.

Submitting a plugin

If you want to add your plugin to the list, please follow the instructions in the README of the repo for the website. The list is managed by members of the InvenTree org, so it might take a few days to process your request. If you are submitting a plugin for the first time, there is a good chance you do not have a publisher/author entry either - please add that as well. The steps are listed in the README.

Please make sure to update your listing if your plugin is no longer maintained or if anything important changes. For now, there is no automated process to update listings from their repos.

Future ideas

Several ideas have been brought forward regarding possible improvements to the plugin list since I started public work on it (the original idea is from Feb/Mar 2022, like the rest of the website). If you have any ideas, please let us know in the discussions on GitHub or in an issue. And if you want to help, please feel free to open a PR for anything listed below.

Inclusion in InvenTree: Users of InvenTree should be able to browse and install plugins directly from within the web app. This would require a way to install plugins and probably a way to update them too. A good example would be Octoprint's plugin manager. The main work would be to create a nice interface, the API endpoints (for installing and activating/deactivation) are already there.

Regarding browsing the list on the site:

  • A more detailed list with screenshots, short descriptions and standardized sections in the page itself
  • A way to rate plugins
  • A way to show how often a plugin is used/downloaded (would probably need 4150)
  • A better way to search for plugins (by name, description, author, tags, etc.) - we deploy statically so that might be tricky
  • A way to filter plugins by InvenTree version
  • A way to filter plugins by language (if they are translated)
  • A way to filter plugins by license (there are so many licenses that I did not include it in the first version) Quality of life:
  • A more automated process to update the list from the plugin repos
  • Improve the PyPI scraper to also work with GitHub and GitLab repos
  • A way to automatically test plugins for compatibility with InvenTree and show that on the listing
  • RSS feed for new plugins

Moon-shot idea: A privacy-friendly way to register your instance once and then have a button on the website that directly installs the plugin. That would also enable some cool other stuff with browser integrations, fast pairing for the app (very much requested by uni labs) and more.

· 4 min read
Oliver Walters

2022 in Review

2022 was a huge year for the InvenTree project.

Release Milestones

This was a very active year for the project, especially in terms of core software development. A huge array of new features have been implemented, and significant performance improvements have been made across the board.

We extend our sincere thanks to the many contributors who have helped make this a reality!

0.6.0

At the start of the year, we released version 0.6.0 of InvenTree. This release provided a slew of significant new features

0.7.0

In May, version 0.7.0 was released, bringing major improvements to the plugin system, among other new features and fixes.

0.8.0

In August the InvenTree team released version 0.8.0.

0.9.0

In December, we released 0.9.0 with 248 merged pull requests from multiple contributors. This release represented a huge number of new features and improvements!

New Website

Our new website (inventree.org) is now up and running! Thanks to @matmair in particular for bringing this to life.

Translations

Translations for the InvenTree project continue to grow, thanks to our vibrant community of users. Thanks to the crowdin project which makes this possible.

Users

And finally, thanks to our users! In 2022 we went from 500 stars on GitHub, to over 2,000! While not necessarily the most accurate metric for tracking how many people are actually using InvenTree, this is very exciting for us.

The GitHub stargazers data gives us a picture of where InvenTree is being used - we've gone global!

World map

Location data were obtained from GitHub stars metadata - InvenTree software does not track user location!

Upcoming in 2023

What are we working on in 2023?

There is a lot on the horizon - and with over 120 outstanding issues we need to be selective in what we tackle first.

UI Refactor

One of the larger projects is a complete front-end overhaul - issue 3901. We are migrating away from the current clutter of templated HTML and JS files, which are pre-rendered by the server, and moving to an API-oriented React UI.

This change will have some immediate major benefits:

  • Improved page load speed and general usability
  • Significant reduction in duplicated code
  • Data are loaded on demand via the API
  • Ability to change front-end elements without touching back-end code
  • Unit testing for front-end code

This will be a pretty significant undertaking, some of the old front-end code has been with us right from the beginning of the project! Please be patient.

Over the coming months we will be shipping the React front-end in parallel with the existing UI code, to allow side-by-side testing while we squash bugs.

Data Import Overhaul

The current workflows for importing data into an InvenTree database are pretty messy. There are three separate methods of ingesting bulk records, none of which we are really happy with.

A complete overhaul of the data import framework is necessary. We will be developing a stack which allows generic, robust, repeatable data importing for various tables.

You can follow the progress here.

Plugins

The InvenTree plugin infrastructure is now very mature, with many custom plugins developed for (and by) our users.

Documentation

As always, the documentation lags the product. While we do try to keep our documentation as fresh as possible, we are always on the lookout for users who can contribute to the project by helping us with documentation!

Check out the documentation project if you are able to contribute.

Sponsorship

The InvenTree project has grown substantially over the last year. While we now have an active user community, we still only have a very small core development team, trying to keep on top of all the great ideas you have.

If you have found InvenTree to be a useful piece of software, especially if you are using it for your business, please consider sponsoring the project. Sponsorship allows the developers to provide more of their (quite precious) time to the project, which benefits everyone.

You can provide a one-off or monthly sponsorship, or sponsor a specific feature or plugin!

· 5 min read
Oliver Walters

0.9.0 Stable Release

The InvenTree team is very excited to announce the InvenTree 0.9.0 Stable Release!

This release is the culmination of many hours of work from multiple developers, providing numerous new features and bug fixes. We extend our thanks to the contributors who have helped on this release, as well as the users who have suggested new features or helped us track down outstanding software issues.

New Features

The 0.9.0 release introduces many new features - some of the major ones are outlined briefly below:

Installer

We now have a packaged command-line installer for simplified setup (on supported platforms), using the packager.io service. The installer is targeted for users who are installing InvenTree on a bare metal system (separate installers are available for container environments).

You can find more information about the installer at docs.inventree.org.

Backup and Restore

Database backup and restore functionality has been improved, using the dbbackup library. A backup of database records (and uploaded media files) can be performed with a simple command line action. Backup can also be configured to occur periodically, serviced by the background worker.

Pricing Overhaul

This release provides a major overhaul for how pricing data is managed. The new pricing system calculates various pricing information (such as BOM cost or purchase price range) and caches this data in the database. This means that the efficiency of accessing pricing data in real time is greatly improved. For complex bills of material, viewing pricing data was (before this update) extremely prohibitive, due to the recursive calculations which were being performed "on the fly". The new architecture makes use of the background worker to recalculate pricing information whenever the underlying data changes, ensuring that "up to date" pricing is readily available.

BOM Pricing

Additionally, more options for controlling how pricing information is calculated and handled have been implemented.

You can read more about managing pricing data in InvenTree at docs.inventree.org.

Barcode Refactor

Barcode support has been significantly improved, allowing custom barcode functionality for a greater range of database model types, and simplifying the API.

  • Custom barcodes can now be assigned to Part instances
  • Custom barcodes can now be assigned to Stock Location instances
  • Custom barcodes can now be assigned to Supplier Part instances

Read more about the updated barcode support in the InvenTree documentation.

Builtin Plugins

As part of the ongoing improvements to the plugin system, InvenTree now features a number of "builtin" plugins. These plugins are always active (even if custom plugin support is disabled for the server) and provide core InvenTree functionality in a way which aligns with the operation of the plugin system. This is intended to streamline the way in which plugins are implemented, as core components of the code are now offloaded to the plugin with a simpler interface.

We have also made some significant improvements to the plugin system documentation.

Validation Plugins

A completely new type of plugin introduced in this release is the validation plugin mixin. This plugin allows users to implement custom validation methods for various database fields. In addition to allowing validation of field values against complex custom rules, this plugin allows automated generation of the "next value" for certain fields, such as serial numbers and batch codes.

News Reader

Now that the new website is live, a news feed is available. If enabled, news about InvenTree can be displayed in the InvenTree dashboard.

Note that this feature is disabled by default, and must be enabled by a staff user

News reader

Part Scheduling

The Part Scheduling functionality has received some updates in this release. If enabled, the Part Scheduling tab shows predicted future stock levels, based on incoming and outgoing orders.

Supplier Part Pack Size

A major improvement to the way supplier parts are handled is the addition of "pack size" for supplier parts. While internally, parts are represented using "unit quantity", they can be sourced from suppliers in larger pack quantities. Pack sizing is also taken into quantity when calculating unit pricing.

Data Sanitization

A number of security related changes have been implemented, providing multiple improvements related to input data sanitization. Some of these updates include:

  • Remove invisible ASCII and unicode characters from user submitted data
  • Sanitize uploaded SVG files
  • Remove malicious HTML from form fields

More generally, a number of security fixes have been made for this release, following vulnerability reports received from the InvenTree community. You can view information on all our security advisory notices on GitHub.

Customizing

Further customization of InvenTree is now available, with custom splash screens and application icons supported in this release.

Bug Fixes

In addition to many new features, this release also provides fixes for a number of bugs, of varying severity! Refer to the release notes for further information.

Release Notes

This list covers only a fraction of the exciting new features. You can view the full release notes on our GitHub page.

· 3 min read
Oliver Walters

Translating InvenTree

How we provide translation support for InvenTree in multiple languages

Community Contributed Translations

At the time of writing, InvenTree provides language translations for 25 languages (in addition to English), with over 11,000 translated words! This is thanks to the sustained efforts of 130+ InvenTree users, who have contributed their time to make our software better for everyone.

Translation progress can be viewed on our Crowdin project page. Here you can view the current status of the translation efforts:

Translation

Translation Pipeline

As translations are entirely community contributed, we need a software framework that allows non-technical users to submit and proofread translations, and a way to bring those translations back into the InvenTree software.

Backend - Django

At its core, InvenTree is built on the Django framework, which provides a translation framework "out of the box".

The Django translation framework provides a toolkit for marking certain text strings as "translatable". Translation strings are able to be replaced by a translated string from a language specified by the user - if a translation for the text is available in that language.

There are many files within the InvenTree project which can provide these translation strings:

  • Python source files
  • Javascript source files
  • HTML template files

Additionally, translation support is provided for the InvenTree mobile app.

Exporting Translations - GitHub

On every commit to the InvenTree main branch, the source code is analyzed to discover and extract translation strings. This information is then pushed to a separate code branch, which is monitored by the translation service

Community Translation - Crowdin

The crucial piece of the puzzle is the integration with Crowdin - an online translation service which provides community contributed translation, and supports open source projects.

Crowdin monitors the InvenTree GitHub repository for any changes to translation files, and provides a user interface for translators to suggest appropriate translated strings.

Suggested translations are then approved (again, by the InvenTree user community), and periodically pushed back to the InvenTree GitHub repo.

Merging Translations - GitHub

Updated translated strings are periodically merged back into the main code branch, keeping the InvenTree code base up to date.

Contributing

The translation framework is provided by the InvenTree team to make our software more useful and appealing to a greater number of people. The entire translation effort is driven by the InvenTree community. Any contributions, no matter how large or small, are greatly encouraged!

If you would like to see improved translations in a particular language, read the contribution guide! The InvenTree project benefits greatly from your efforts, and you get a great piece of open source software in your native language.

Adding New Languages

If you would like to see support for a new language, raise an issue on our GitHub page.