Licensing Service Development for 3D Printers

Background

Licensing protects developers’ copyrights, ensures product quality, and encourages innovation since developers are more likely to invest time and money in creating new products when fairly compensated for their work.

Subscription can be considered a type of licensing. This model entitles clients to use the product for some time in exchange for a regular fee. In this project, we were tasked with developing such a licensing service.

Request

A while back, our team participated in developing a 3D printer. At some point, the customer had to decide how to distribute the ready-made product. He chose to sell it by subscription.

HHD’ job was to design and create a licensing service and its components that could block and unlock device functions depending on subscription terms.

Solution

1. Desktop application 

Our team had developed a cross-platform app for the customer’s product during our previous work on this project. The application enables users to control and configure the device. The app was written in C++ using the Qt framework. When developing the licensing solution, we expanded the functionality of the app so that it could be used to activate licenses.

The application acts as an intermediary between the device (its microcontroller) and the web server. It provides a license key input field and transmits device data to the server, allowing users to activate the license.

2. Microcontroller

It validates the digital signature contained in the license structure and provides access to device features in accordance with the subscription plan the buyer paid for. The development of the microcontroller firmware was delegated to another team. However, Integra kept in touch with them to coordinate work.

3. Web server

The server is a web application that generates license keys and stores license data, device data, a subscription plan, and other information. It was created with the Jmix framework.

Jmix is a platform for rapid web application development in Java. It uses the declarative paradigm and offers a wide selection of pre-built components, so creating apps in Jmix takes less time and, therefore, is cheaper. In addition, Jmix supports modern web technologies such as HTML5, CSS3, and JavaScript, which allows for creating applications with a visually appealing and intuitive GUI. At the same time, the framework is based on Java and Spring Framework, which ensures high scalability and performance.

We had to adjust certain interface elements in accordance with the specifics of the program: it required extra checks before information could be added into the database. Therefore, we had to customize the interface directly in the programming code in Java.

Using the capabilities of the Jmix HTTP server in Java, we developed a separate module for providing license data to client applications. The module implements the REST API protocol for servicing HTTP requests. It was built into the Jmix HTTP server.

The team also developed protocols for communication between the desktop application and the device, as well as between the app and the server.