PRUSA RESEARCH Komunitní portál pro stovky tisíc uživatelů 3D tiskáren

Světová jednička ve výrobě osobních 3D tiskáren, Prusa Research, se rozhodla pořádně šlápnout do budování komunity nadšenců 3D tisku. Lidé od Josefa Průši milují open source technologie, proto je zaujaly naše zkušenosti s vývojem webových aplikací v Pythonu. Společně jsme vytvořili portál, kde amatérští tiskaři sdílí desítky tisíc modelů, usnadňují si začátky s 3D tiskem nebo se zapojují do designových soutěží.

Komunitní portálWebová aplikace na míruPython3D tiskárny Průša

S čím a proč nás Prusa Research oslovil

Josef Průša posílá z Prahy do světa každý měsíc více než 11 000 3D tiskáren. Aby si noví tiskaři mohli cokoliv vytisknout, potřebují kromě tiskárny i náplň (tzv. filament) a správný model – soubor ve formátu STL nebo 3MF doplněný instrukcemi k tisku ve formátu Gcode.

Vytvoření vlastního modelu vyžaduje zkušenosti, proto začátečníci obvykle využívají modelů od ostřílených tiskařů. Aby Prusa Research podpořil rozvoj komunity, rozhodli se vybudovat globální portál PrusaPrinters, kde

  • si může každý 3D tiskař vytvořit profil,
  • pochlubit se svým modelem,
  • sdílet ho s ostatními,
  • vyměňovat si zkušenosti,
  • nebo soutěžit v designových výzvách (např. o nejlepší model lampy, antické sošky nebo pomůcky pro zahradničení).

Bylo pro nás také důležité, abychom si s dodavatelem rozuměli stylem práce – aby pro něj nebyla administrativa a procesy důležitější než samotný výsledek.

Martin Bach,
Content Director at Prusa Research

O Prusa Research

Výrobce a prodejce 3D tiskáren a jeden z nejrychleji rostoucích startupů střední Evropy. Prusa Research vyrobí a prodá více než 11 000 tiskáren měsíčně zákazníkům z celého světa. Firma buduje silnou a aktivní komunitu tiskařů, kteří na globálním portálu PrusaPrinters.org sdílejí modely, soutěží o nejlepší návrh v různých výzvách a pomáhají si v 3D tisku.

logo Prusa Research
1
světová jednička ve výrobě osobních 3D tiskáren
160
zemí světa, kde tiskárny dělají radost lidem
44 000+
modelů, které tiskaři sdílí na komunitním portálu
290 000+
uživatelů portálu za měsíc

Definovali jsme cíle projektu a pustili se do technické analýzy webové aplikace

Na začátku spolupráce jsme si ujasnili cíl. Byl to komunitní portál vyvinutý open source technologiemi, který usnadní 3D tiskařům začátky. Portál musí:

  • být škálovatelný, aby fungoval i při několikanásobném nárůstu počtu tiskařů,
  • přístupný s rychlou odezvou pro uživatele od New Yorku po Sydney,
  • zvládat peaky, tj. bezchybně fungovat i ve chvílích, kdy dochází například k oznámení technologické novinky a uživatelé chtějí být u toho (load balancing),
  • mít chytrý autentizační mechanismus, který zákazníkům Prusa Research usnadní registraci a přihlášení a bude využitelný i v ostatních službách Prusa Research (e-shop, forum),
  • podporovat interakci tiskařů (skupiny, fórum),
  • umožňovat snadné nahrávání 3D modelů
  • a také jejich vyhledávání – ať už fulltextem, filtrováním, nebo přes jednotlivé tiskaře v mapě.

Zajímavost o 3D tisku

Nejčastějším formátem 3D objektů je STL. Ten však neobsahuje tiskové informace, před tiskem je tedy nutné model ručně zpracovat, tzv. slicovat. Pokud však autor modelu přidá Gcode soubory pro různé typy tiskáren, můžete tisknout ihned po stažení modelu i bez slicování.

Architektura portálu

Požadavky jsme prověřili pečlivou technickou analýzou. Jedním z klíčových přínosů této fáze bylo rozhodnutí, jak přistoupit k architektuře portálu.

Díky pečlivé analýze jsme mimo jiné zvolili vhodnou architekturu celého portálu
Díky pečlivé analýze jsme mimo jiné zvolili vhodnou architekturu celého portálu.

S ohledem na robustnost systému, jsme zvolili multi serverovou High Availability (HA) architekturu, využívající externích služeb, kterou lze jednoduše škálovat na miliony uživatelů napříč kontinenty.

Jan Tezner,
CTO COex

Python, framework Django, Angular a další technologie

Sáhli jsme po ověřených technologiích, které pohání aplikace jako Youtube nebo Seznam.

  • Backend aplikace je napsaný v programovacím jazyce Python,
    s využitím osvědčeného webového frameworku Django,
  • pro databáze jsme použili PostgreSQL,
  • frontend pohání framework Angular od Google,
  • komunikaci mezi frontendem a backendem zajišťuje API GraphQL,
  • fulltextové vyhledávání funguje díky Elasticsearch,
  • náhledy obrázků generujeme ve službě AWS Lambda
  • a obrázky se uživatelům zobrazují velmi rychle díky CDN službě AWS CloudFront.

Více o tom, jaké nástroje a technologie v COexu používáme, se dozvíte na stránce o webových technologiích.

python GraphQL Angular PostgreSQL django elastic

Hladký průběh projektu díky agilnímu vývoji a mixovanému týmu s klientem

Vytvořili jsme mixovaný tým, do kterého jsme zapojili zaměstnance Prusa Research. Tím jsme zrychlili komunikaci zefektivnili vývoj. Obě strany měly neustále pod kontrolou, že vyvíjíme software, který bude fungovat tak, jak má.

2017

Listopad

První poptávka a technická analýza

2017

Prosinec

zahájení vývoje

2018

Červen

dokončení vývoje MVP

2019

Únor

dokončení verze 1.0

2019

Duben

spuštění první veřejné verze

2021

Dodnes

aktualizace, maintenance, rozvoj

Postup prací na komunitním portálu PrusaPrinters.org

Co globální komunitní portál umí?

  • Uživatel si na 3 kliknutí stáhne jakýkoli z desítek tisíc 3D modelů.
  • Díky chytrému filtrování lze vyhledávat printy podle typu tiskárny, filamentu, průměru trysky 3D tiskárny, hmotnosti objektu nebo třeba rychlosti vytisknutí.
  • Nahrávání nových 3D modelů je rychlé díky validaci, kterou dělají algoritmy – kontrolují, jestli jsou STL, 3MF i Gcode soubory ve správném formátu.
  • Prusa Research může organizovat designérské výzvy o nejlepší modely.
  • Tiskaři mohou na mapě najít majitele 3D tiskáren ve svém okolí, požádat je o pomoc, vytvářet něco společně nebo jim zadat tisk na zakázku.

Při vývoji jsme se zdokonalili v práci s k-means v PostgreSQL, Leaflet a mapou

Mapa uživatelů portálu Prusaprinters.org v Singapuru.
Mapa uživatelů portálu Prusaprinters.org v Singapuru.

Abychom dokázali svižně zobrazovat desítky až stovky tisíc uživatelů a míst, vytvořili jsme serverovou implementaci clusteringu (shlukování bodů), která využívá algoritmu k-means v PostgreSQL. Tím jsme dosáhli rychlosti načítání obsahu mapy, které by nebylo při použití standardních frontendových řešení možné.

Museli jsme se vypořádat i s nečekaným problémem anonymizace polohy. Když jsme vytvářeli předběžnou mapu všech tiskáren, počítali jsme, že přibližnou polohu uživatele získáme s pomocí PSČ adres doručení, ale zjistili jsme, že v zemích jako Velká Británie nebo Singapur vyčtete podle PSČ téměř přesnou adresu uživatele. Proto jsme aplikovali posun GPS souřadnice daného umístění v mapě náhodným směrem, a tím uživatelská data anonymizovali.

Výsledky projektu

Prvních tisíc uživatelů se na portál registrovalo v řádu hodin po spuštění. Kvůli velkému zájmu jsme upravili mailing systém, aby v extrémně krátkém čase zvládl rozesílku podstatně většího množství e-mailů, než s jakým jsme počítali.

Po 9 měsících se komunita rozrostla na 44 000 uživatelů, kteří do webové aplikace nahráli více než 10 000 3D modelů.

K listopadu 2021 používá portál PrusaPrinters 290 000 uživatelů měsíčně, registrovaných je 143 567 tiskařů. Ke stažení je zde 48 460 printů.

Do budoucna s Prusa Research plánujeme doplnění komunitního portálu o nové funkce, jako je sdílení, interakce, zeď a další prvky sociálních sítí. Předávání zkušeností a sdílení modelů mezi 3D tiskaři tím bude fungovat ještě lépe.

290 000 měsíční návštěvnost
143 567 registrovaných tiskařů
48 460 publikovaných printů

Zákaznický portál PrusaPrinters.org je náš dosud největší webový projekt. Soustředíme se primárně na vývoj HW a SW, ale vývoj webu jsme se rozhodli realizovat externě – ve spolupráci s COexem. Po 2 letech spolupráce hodnotím tohle rozhodnutí velmi pozitivně.

COex přistupuje k vývoji kreativně a iniciativně. Rozumíme si i stylem práce – procesy a administrativa pro ně nejsou důležitější než samotný výsledek.

Výsledky ankety, kterou jsme mezi uživateli portálu uspořádali pár měsíců po spuštění, dokazují, že jsme společně odvedli dobrou práci. Čeká nás hodně zajímavého vývoje do budoucna. Těším se na to.

Martin Bach, Content Director at Prusa Research
Martin Bach,
Content Director at Prusa Research

Máte zájem o nezávaznou konzultaci, nebo se chcete jen na něco zeptat?