Průša Research

Prusa Research

Prusa Research global portal for sharing 3D printer models and print files

Prusa Research global portal for 3D printer models and print files sharing

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 specialized software. Prusa Research now comes with a portal where the files can be easily shared. Other users can easily download them to the SD card or print them without complex modifications.

In addition to file sharing, the new portal acts as a place to bring together a community of 3D printing fans, to exchange tips and ideas, share models, or simply inspire each other. The service combines a community server with social network elements. End-customer service design also greatly facilitates the first steps with a 3D printer, encouraging creativity and the sharing of work output, 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”.

Martin Bach, Content Director at Prusa Research

Challenges

designing a service for numerous global user community

As with any major project, a thorough technical analysis and detailed architectural design preceded the implementation. Several key areas had to be addressed. For example, scalable robust architecture and adequate infrastructure design to ensure maximum availability and response speed for numerous customers from the US, Europe, Asia and Australia. The design of the system also included load balancing mechanism that can handle power peaks with hundreds of thousands of requests per hour, especially at the time of announcing news. The design of the system also included load balancing mechanism that can handle power peaks with hundreds of thousands of requests per hour, especially at the time of announcing news. Another important part of the system was the designing and implementation of a consolidated authentication mechanism for logging across several existing services, or displaying a large number of public user profiles on a map.

Scaling and microservices

architecture in DNA

From the very beginning, we focussed 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 the European data centers (given the company's headquarters), but 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.

Gcode: ‘recipes’ for printing 3D models

One of the main features of the new service is uploading design files to print 3D objects. The most common format is STL, but it does not contain printing instructions for the particular model of a printer, so files usually need to be manually processed 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 availability of 3D printing for general users. A model shared by a user on one side of the world can literally be printed in minutes on a 3D printer on the other side of the planet. Thanks to the new service, 3D printing fans can watch design stars in the industry or use the internal marketplace to sell their 3D designs in the future.

Precise filtering options

Filter 3D models by compatible printer model, printing material, printing time and more

Django, GraphQL and Angular

As a software basis for the backend 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. In 2018, this API query language was not being used so much, and with time it turned out to be the right choice as the number of projects built in this way is growing rapidly. Another important part of the system is Elasticsearch, which we have been using for a long time on projects with fulltext search and server side caching. Finally, the frontend is driven by modern Angular framework from Google developers.

To generate image previews, we used AWS Lambda, which is now considered to be a “best practice” when it comes to optimizing performance and is used by many other services such as Slack. To optimize response speed, we used CDN service AWS CloudFront to load images on the front end. AWS CloudFront caches images so that it is not always necessary to reach AWS S3 (where the images are stored), resulting in significant response advantage.

Server-side clustering above the map

Displaying tens of thousands of user profiles above the map was not an easy task, especially in terms of maintaining speed and fluency. Eventually, we used a Postgre k-means combination above GPS to solve the problem, and implemented our own clustering function on the server rather than JavaScript (as is usual with most mapping solutions).

Zip code 'issue'

During the beta operation, we encountered an interesting issue with anonymizing user addresses. The original idea was to get a location based on a user's zip code, but later this emerged as not fully usable; it turned out that in some parts of the world (e.g. Great Britain, Canada or Singapur) the address entry might display the user's home too accurately (which was undesirable). Anonymization and a certain “blur” of the positioning accuracy of individual users were incorporated into the design.

“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.”

Martin Bach, Content Director at Prusa Research

Launch

The public launch of the system saw huge interest from the 3D printing community. Besides optimization and the scaling of performance it was also necessary to optimize the mailing system in the first days after the launch. The original service had problems with the speed of sending, which was particularly critical in the case of registration e-mails, so in matter of days we had to reach for a new supplier who managed to deliver tens of thousands of emails much faster and more reliably.

Thanks to the popularity of Prusa Research, thousands of people registered with the system within a few hours of the launch, and gradually a large part of the customer community has started to use it. After the first months of operation, the service has reached over 100k active users monthly and over 10,000 3D models have been created & uploaded.

In the future, a number of extensions and additional features are planned, which will be implemented according to user feedback.

100k
visitors
per month
34k
users
on the map
12k
3D prints
available online

Browse 3D models at

Prusaprinters.org

Looking to realise a similar project? We can make it happen!

Get in touch