È stato pubblicato il progetto open source MedusaGo, che sviluppa l'implementazione del backend della piattaforma per la creazione di negozi online Medusa in linguaggio Go (la piattaforma originale Medusa è scritta in TypeScript e funziona su Node.js). MedusaGo è compatibile con Medusa v2 a livello API (versione base 2.22.4), quindi il pannello di controllo standard di Medusa, la libreria @medusajs/js-sdk e i negozi esistenti funzionano con esso senza modifiche. Il codice è distribuito sotto licenza MIT.
MedusaGo utilizza lo stesso schema di database per PostgreSQL di Medusa, quindi può essere eseguito sopra un database di un negozio già funzionante su Node.js. È anche possibile effettuare un ritorno. Le sole dipendenze richieste sono Go 1.26+, PostgreSQL e, se desiderato, Redis. Node.js è richiesto solo per il front-end su Next.js e per le modifiche al pannello amministrativo. I componenti dell'Enterprise Edition (RBAC, SSO) non sono inclusi nel progetto. La compatibilità è stata verificata utilizzando oltre 2600 richieste registrate in 96 scenari, che vengono inviate a entrambe le implementazioni, dopo di che i codici di risposta, le intestazioni, i cookie e i corpi delle risposte vengono confrontati byte per byte, viene confrontato il contenuto del database e viene controllato il comportamento dei moduli e del livello Query.
La struttura del repository replica il monorepo di Medusa: a ogni file route.ts corrisponde route.go. Sono stati portati i moduli catalogo, carrello, ordini, pagamenti, prezzi, promozioni, magazzini, spedizioni, tasse, autorizzazione e altri, così come il motore di workflow (in-memory e su Redis). Attualmente nel progetto ci sono circa 1400 file e 177.000 righe di codice in Go. I pacchetti JavaScript originali (pannello amministrativo, sistema di design, js-sdk) vengono sincronizzati con l'upstream senza modifiche. Per creare un nuovo progetto è disponibile l'utilità create-medusago-app, simile all'utilità create-medusa-app. I comandi CLI replicano Medusa.
Fonte: opennet.ru
