Senza categoria

Caso studio: come abbiamo sviluppato Lùmen, software laser nativo per Mac

Caso studio: come abbiamo sviluppato Lùmen, software laser nativo per Mac

Ultimo aggiornamento:

Caso studio: come abbiamo sviluppato Lùmen, software laser nativo per Mac

Negli ultimi anni gli incisori laser hobbistici sono usciti da una nicchia ristretta per diventare strumenti accessibili a maker, artigiani e appassionati. Macchine come Sculpfun, Atomstack o Ortur costano poche centinaia di euro e si trovano facilmente online. Ma chi possiede un Mac scopre presto un problema: il software per controllare queste macchine, sul sistema operativo di Apple, è un terreno scoperto.

In questo articolo raccontiamo il caso studio di Lùmen, l’app macOS nativa che abbiamo sviluppato per controllare incisori laser GRBL. Una storia utile a chi sta valutando lo sviluppo di un’app verticale, in particolare in un mercato dove il cross-platform domina e il nativo è considerato “troppo costoso”.


La sfida iniziale: un mercato dominato dal cross-platform

Il contesto degli incisori GRBL e il problema su Mac

GRBL è il firmware che gira su praticamente tutti gli incisori laser a diodo entry-level. Comunica via USB seriale con un protocollo testuale a comandi G-code. Il sistema è semplice, aperto, ed è il motivo per cui macchine di brand diversi — Sculpfun, Ortur, Atomstack, NEJE, TwoTrees — condividono lo stesso protocollo di base.

Eppure, su Mac, la scelta di software è limitatissima. LightBurn è la soluzione professionale più completa, ma è cross-platform Java/Qt, ha un’interfaccia che non sembra mai a casa su macOS, e dal 2023 è passata a un modello di abbonamento (circa 60$ all’anno per la licenza GCode). LaserGRBL, l’alternativa gratuita più diffusa, è scritta in .NET e gira solo su Windows. Le opzioni open source su Mac sono per lo più progetti abbandonati o web-based con UX scomode.

L’analisi competitiva e la nostra ipotesi

L’analisi è stata netta: c’era un segmento di utenti — possessori di laser GRBL e di Mac — che pagava un canone annuale per un software cross-platform di cui usava solo il 30% delle funzioni, oppure rinunciava del tutto e usava macchine virtuali Windows. La nostra ipotesi: un’app nativa, focalizzata, a prezzo onesto e una-tantum, poteva trovare il suo spazio.

Da qui è nato Lùmen, software laser nativo per Mac.

Lùmen app per mac per incidere

Le scelte tecniche

SwiftUI nativo, niente cross-platform

La prima decisione è stata di rinunciare al cross-platform fin dal giorno uno. SwiftUI per l’interfaccia, AppKit dove necessario — il canvas di disegno e la console seriale. Una scelta controintuitiva: rinunci a un mercato (Windows + Linux) per concentrarti su uno solo. Ma il “sentirsi a casa” su macOS è esattamente l’argomento di vendita contro le alternative cross-platform. Un’app SwiftUI conosce le scorciatoie, il dark mode, i file panel nativi, il drag-and-drop di sistema. È difficile imitare bene tutto questo.

Per il canvas (cuore dell’app, dove l’utente posiziona immagini e tracciati prima di incidere) abbiamo scelto un NSView custom invece di un Canvas SwiftUI: il livello di controllo richiesto su zoom, pan, hit-testing e cache di rendering bitmap richiedeva primitive AppKit. SwiftUI è stato il guscio, AppKit la macchina interna.

Comunicazione seriale USB e protocollo GRBL

GRBL parla via USB seriale a 115200 baud. Lo abbiamo gestito con I/O POSIX a basso livello sui file descriptor del device /dev/cu.*, senza librerie esterne. La parte non banale è il character counting protocol di GRBL: la macchina ha un buffer hardware di 127 byte e accetta comandi “ok per uno”. Bisogna tracciare i byte inviati senza risposta, evitare overflow, gestire risposte fuori sequenza.

Una sfida correlata: GRBL invia caratteri di controllo binari mescolati al flusso testuale. Il parser deve filtrarli prima di assemblare le righe, gestire risposte concatenate (<status>ok su una riga sola), e recuperare da stalli quando un “ok” si perde per rumore sulla seriale.

Image processing: dai pixel al G-code

L’incisione di una foto richiede una pipeline che non viene “gratis”: carica → ridimensiona → grayscale → contrast/brightness → dithering → emissione G-code raster con overscan e compressione RLE. Abbiamo implementato sette algoritmi di dithering classici e abbiamo scoperto che Atkinson è il più popolare tra gli incisori laser perché privilegia il contrasto al dettaglio fine: su materiali come legno o pelle questo si traduce in un risultato più leggibile.

Per chi vuole approfondire, abbiamo dedicato una guida ai diversi algoritmi di dithering per l’incisione laser, con confronti visivi su materiali reali.

Decisioni di prodotto

Pricing una-tantum vs subscription

Il mercato pendeva tutto verso il subscription. LightBurn aveva appena fatto la transizione, e una parte della community storceva il naso. Abbiamo deciso di andare nella direzione opposta: €9,99 una-tantum, senza canoni futuri. La scelta non è ideologica, è strategica. Se il segmento target è l’hobbista del weekend, un canone annuale del 5-10x del prezzo della macchina è una barriera psicologica enorme. €9,99 sono “il prezzo di una pizza”, non una decisione finanziaria.

Per la gestione delle licenze abbiamo scelto LemonSqueezy come gateway di pagamento, con validazione online più cache offline. La chiave viene memorizzata nel Keychain di sistema, così la licenza segue l’utente anche dopo un reinstall.

Quali macchine supportare al lancio

Avremmo potuto rilasciare un controller GRBL “generico” e lasciare la configurazione all’utente. Abbiamo scelto invece di partire con preset built-in per le macchine più diffuse: SCULPFUN, Ortur, Atomstack, TwoTrees, NEJE. Per chi non ha una di queste, c’è la possibilità di salvare un preset custom.

La logica è semplice: un utente che ha appena comprato un laser non sa cosa siano “max spindle speed” o “work area in mm”. Vuole selezionare il modello dal menu e iniziare. Per supportare ognuna di queste macchine al meglio abbiamo scritto una guida dedicata per ogni modello supportato, con setup specifici e limiti pratici.

UX per utenti hardware, non solo dev

Una lezione che abbiamo imparato presto: gli utenti di queste macchine non sono dev. Sono maker, artigiani, hobbisti che hanno scoperto il laser su YouTube. Non vogliono leggere documentazione, non vogliono configurare seriali, non vogliono interpretare codici di errore GRBL.

Questo ha guidato molte decisioni di interfaccia: countdown di 5 secondi prima di partire (per spostare le mani), preview live del frame del job sul materiale, preset di materiale che suggeriscono power/speed di partenza, traduzione automatica dei codici di errore GRBL in italiano e inglese leggibile, ripresa automatica da una linea specifica se il job si interrompe.

Cosa abbiamo imparato

Il prodotto oggi

Lùmen oggi è un’app stabile, in produzione, con utenti paganti e una roadmap dettata dal feedback. È disponibile come trial gratuito sul sito ufficiale e si attiva dopo l’acquisto della licenza.

Cosa rifaremmo diversamente

Avremmo iniziato prima a scrivere guide SEO sul sito. Nei primi mesi abbiamo concentrato tutto sul prodotto, sottovalutando quanto contasse l’organico per un’app verticale senza brand consolidato. La curva di indicizzazione di Google premia chi inizia il lavoro di contenuto fin dal day-one.

Avremmo anche pensato prima all’analytics anonima d’uso. Capire quali feature vengono usate davvero vale dieci interviste utente, e averlo dal lancio avrebbe accelerato le decisioni di roadmap.

Lezioni applicabili a ogni progetto Mac nativo

Qualche punto che porteremmo dietro a ogni futuro progetto macOS:

  • Il nativo paga in mercati dove il cross-platform domina. Proprio perché tutti scelgono la via facile, chi sceglie quella faticosa ha un argomento di vendita differenziante.
  • SwiftUI è ottimo per il guscio, AppKit per le sezioni performance-critical. Non è una guerra, è una collaborazione.
  • Il pricing una-tantum è ancora una leva di posizionamento. In un mercato saturo di subscription, “lo paghi una volta” è quasi un argomento etico.
  • Ascolta gli utenti reali, non quelli che immagini. Cinque ore in un thread Reddit di hobbisti valgono più di dieci sessioni di pianificazione interne.

Scopri Lùmen, il software laser nativo per Mac che abbiamo sviluppato, e contattaci se hai un’idea per un’app verticale che merita lo stesso trattamento.

Hai bisogno di altre informazioni?

Contattaci senza impegno


Deprecated: Creation of dynamic property TPLIS_CL_Cookie::$ver_position is deprecated in /home/u897962415/domains/niceapp.it/public_html/wp-content/plugins/eu-cookie-law-compliance/includes/class-cookie.php on line 95