Global portal for sharing 3D printer models
The 3D printer market is growing fast, and Prusa Research printers are one of the most sought after products in the industry due to their open hardware concept. The company sells thousands of new printers to more than 160 countries worldwide every month, and its customers form a powerful community that devises, designs and prints a huge number of 3D objects. The objects are printed using design files (most often in STL or 3MF formats) and “instruction files”— which specify printing instructions for a specific 3D printer. These “instruction files” are referred to as Gcode files, and users create them in a specialized software. Prusa Research now comes with a portal where the files can be shared easily. Users can easily download them to the SD card or print them without complex modifications.
Besides being a file-sharing platform, the new portal acts as a place to bring together a community of 3D printing fans, let them exchange tips and ideas, share models, or simply inspire each other. The user-centered design also greatly helps the end-customers during their first steps with a 3D printer, encouraging creativity, sharing of their work, information exchange, and overall interaction among the customer community.
“Unlike other portals dedicated to sharing 3D design files, users of PrusaPrinters do not have to work with the downloaded file and can print directly. This will make it much easier for many people to get into 3D printing”.
From the very beginning, we focused on the need to build a dynamically scalable system that could grow to millions of users in the future. We chose an architecture that uses AWS and operates primarily in European data centers (given the company's headquarters). As the project grows, it is easily extensible to other regions. In addition, the entire system uses a large number of external services from Amazon, Google and others to provide the appropriate flexibility and facilitate a range of scalability operations.
One of the main features of the new service is an option to upload design files of 3D objects. The most common format is STL, however it does not contain printing instructions for the particular model of a printer, so the files must be processed manually before printing. That is why the portal allows direct uploading of Gcode files for each type of printer. These files require no further modifications and the model can be printed immediately. This greatly increases the accessibility of 3D printing for general users. A model shared by a user on one side of the world can be printed on a 3D printer on the other side of the planet literally in minutes. Thanks to the new service, 3D printing fans can follow famous designers in the industry or use the internal marketplace to sell their 3D designs in the future.
As a software basis for the back-end of the application, we chose our favorite Python—the proven Django framework, Postgres and highly regarded GraphQL for communication between the front-end and back-end. Although in 2018, this API query language was not so commonly used, it turned out to be the right choice as the number of projects built this way is growing rapidly. Another important part of the system is Elasticsearch, which we have been using for a long time for fulltext search and server side caching. Finally, the front-end is driven by modern Angular framework from Google developers.
“PrusaPrinters.org is our largest web project to date. We primarily focus on hardware and software development - which is why we decided to develop the website externally, in cooperation with COEX. After almost two years of cooperation, we consider this decision very positive. COEX approaches development proactively and creatively, which corresponds to the style of our work, where processes and administration are never more important than the outcome itself. The results of a survey that we conducted among users a few months after launch clearly demonstrate that we and COEX did a good job together. It also means that we still have lots of hard work ahead to meet the high expectations.”